【发布时间】:2010-09-10 17:47:57
【问题描述】:
我遇到了“一般保护异常”的未处理异常。虽然程序运行但没有输出。
我想知道我可以做些什么来调试这样的异常?
谢谢
【问题讨论】:
-
是哪个平台? linux、windows还是别的什么?
我遇到了“一般保护异常”的未处理异常。虽然程序运行但没有输出。
我想知道我可以做些什么来调试这样的异常?
谢谢
【问题讨论】:
是的,如果在 Visual C++(专业版或快捷版)中使用调试器无法发现问题,并且确实导致整个系统崩溃,请查看:
http://support.microsoft.com/kb/315263
如果它没有使系统崩溃,并且调试器没有让你到达它发生的地方,你可以尝试使用 OutputDebugString 和 WinDbg:
http://msdn.microsoft.com/en-us/library/aa363362%28VS.85%29.aspx
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
通过使用两个输出字符串进行二进制搜索来缩小导致问题的行,以查看崩溃发生的位置。最终你应该看到你的第一行打印而第二行没有打印,然后你知道问题可能发生在两个输出字符串之间。然后,您可以在逻辑上(以二进制搜索模式)移动它们,直到将它们围绕一行代码并且只打印第一行,然后您可以怀疑它们之间的实际代码行。
【讨论】:
尝试使用来自 msft 的调试诊断。这将运行一个服务来监控您的应用程序,并在您获得 gpe 时创建一个用户转储。然后,您可以将转储加载到 windbg 中,并查看异常发生时发生的情况。
【讨论】: