调试异常,源信息丢失
Debugging an exception, source information missing
我的程序似乎运行了很短的时间,然后崩溃了以下错误:
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中使用符号服务器,请遵循以下说明。
相关文章:
- VisualC++ 2010 有没有办法找出有关未处理异常错误的更多详细信息
- CPP 异常获取抛出调用方的详细信息
- 为什么重新抛出异常会丢弃"what()"给出的信息?
- C#调用C 第三方DLL(无源)提出异常 - 不兼容PinVoke
- clang:如何在 OS X 中分析时获取源信息
- 如何将有关最顶层调用/上下文的信息添加到异常
- 在进程外使用MiniDumpWriteDump时,如何获取异常信息
- 我如何从boost ::异常获得更好的诊断信息
- 提升异常的错误信息
- 我可以复制构造一个带有错误信息的提升::异常吗?
- 如何在不同的上下文(例如线程)中保留原始异常类型信息
- 从用catch(..)捕获的异常中获取一些信息
- 堆栈异常处理和析构函数展开.如何使用这些信息
- 异常是否可以自动提供有关其环境的详细信息
- 找不到异常源:cudaError_enum内存位置
- 捕获所有异常并记录信息
- 如何从谷歌测试中的异常中获取回溯信息
- 如何在'catch(...)'中获取异常信息
- 如何使用boost异常将信息添加到std::异常中
- 调试异常,源信息丢失