调试异常,源信息丢失



我的程序似乎运行了很短的时间,然后崩溃了以下错误:

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中发生异常的确切位置?

像这样的GL崩溃最可能的原因是不正确的缓冲区处理。使用glGetError()时不会看到这个表面—驱动程序在访问错误的顶点/索引缓冲区时只会崩溃。您可能会幸运地使用gDEBugger

调试它。

使用Microsoft Symbol Servers下载用于Windows dll的符号。希望这能让您更好地了解错误发生的位置。要在Visual Studio中使用符号服务器,请遵循以下说明。

最新更新