是否可以在OpenGL函数上设置断点?

问题描述 投票:0回答:1

有时我需要找出代码的哪一部分调用某个OpenGL函数,所以我尝试这样做:

b glEnableVertexAttribArray
----------------------------
Breakpoint 3 at 0x7ffff0326c80 (2 locations)

但是它不起作用,有什么方法可以使它起作用吗?

我在gdb中使用ubuntu18.04,我的GPU为GeForce GTX 1050 Ti

debugging opengl gdb breakpoints
1个回答
2
投票

如果您查看GL/glew.h标头,您将看到它包含与以下内容相似的行:

#define GLEW_GET_FUN(x) x
#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D)
#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements)
#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D)
#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D)

当您调用glewInit时,这些__glew*变量将填充从OpenGL实现中提取的指针。在您的情况下,应在此类指针的内容上设置断点,因此*__glewEnableVertexAttribArray

对于GLAD,您必须在*glad_glEnableVertexAttribArray上放置一个断点。在两种情况下都请注意*:这告诉调试器取消引用指针并将断点放置在正确的位置。

© www.soinside.com 2019 - 2024. All rights reserved.