有时我需要找出代码的哪一部分调用某个OpenGL函数,所以我尝试这样做:
b glEnableVertexAttribArray
----------------------------
Breakpoint 3 at 0x7ffff0326c80 (2 locations)
但是它不起作用,有什么方法可以使它起作用吗?
我在gdb
中使用ubuntu18.04
,我的GPU为GeForce GTX 1050 Ti
如果您查看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
上放置一个断点。在两种情况下都请注意*
:这告诉调试器取消引用指针并将断点放置在正确的位置。