2

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

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

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

4

2 回答 2

1

像这样的 GL 崩溃最可能的原因是不正确的缓冲区处理。你不会用 glGetError() 看到这个表面——驱动程序会在访问坏的顶点/索引缓冲区时简单地崩溃。你可能有运气用gDEBUgger调试它

于 2013-06-18T21:07:09.397 回答
0

使用Microsoft 符号服务器下载 Windows DLL 的符号。这有望让您更好地了解错误发生的位置。要将符号服务器与 Visual Studio 一起使用,请按照这些说明进行操作。

于 2013-06-18T21:07:50.197 回答