调试异常,缺少源信息

时间:2013-06-18 21:02:38

标签: c++ visual-c++ opengl visual-studio-2012

我的程序似乎在崩溃之前运行了一小段时间,但出现以下错误:

Unhandled exception at 0x001FFF23 in Program.exe: 0xC0000005: 
Access violation reading location 0x040FA010.

调用堆栈非常无用(此模块的调试信息中缺少源信息),所以我不知道问题出在哪里。该程序在崩溃(数百帧)之前正常运行不同的时间,因此使用断点定位问题非常困难。尝试加载符号但未找到符号。

ntdll.dll!_NtRaiseException@12()   Unknown
ntdll.dll!_KiUserExceptionDispatcher@8()   Unknown
0027ff23()  Unknown
[Frames below may be incorrect and/or missing]  
nvoglv32.dll!582c9af4() Unknown
nvoglv32.dll!582c9dbb() Unknown
nvoglv32.dll!582cdbd3() Unknown
nvoglv32.dll!582d0918() Unknown
nvoglv32.dll!57a9491b() Unknown
nvoglv32.dll!580c5f35() Unknown
KernelBase.dll!_GlobalAlloc@8()    Unknown
nvoglv32.dll!57a058a5() Unknown
nvoglv32.dll!579f60ab() Unknown
nvoglv32.dll!582df7ce() Unknown
nvoglv32.dll!57a106e5() Unknown
nvoglv32.dll!58190f2d() Unknown
nvoglv32.dll!582bb8c7() Unknown
nvoglv32.dll!57a0b621() Unknown
nvoglv32.dll!5823285b() Unknown
nvoglv32.dll!58232a9d() Unknown
KernelBase.dll!_HeapCreate@12()    Unknown
ntdll.dll!_NtFreeVirtualMemory@16()    Unknown
KernelBase.dll!_GlobalFree@4() Unknown

查看callstack我认为它与OpenGL有关,但glGetError()从不表示存在问题。我的程序很长,所以我没有在这里发布。此外,我的问题不是修复这个特殊的异常,而是找到一种有效的方法来调试它们。逐行读取整个程序不是一个,因为我不知道问题出在哪个函数。 / W3没有编译器警告,所以我不知道从哪里开始。如何找出Visual Studio 2012 Ultimate中确实发生异常的位置?

2 个答案:

答案 0 :(得分:1)

这种GL崩溃的最可能原因是缓冲区处理不当。你不会在glGetError()中看到这个表面 - 驱动程序在访问坏顶点/索引缓冲区时会崩溃。您可以通过gDEBugger

调试它

答案 1 :(得分:0)

使用Microsoft Symbol Servers下载Windows DLL的符号。这有望让您更好地了解错误发生的位置。要在Visual Studio中使用符号服务器,请按照these instructions