C ++:如何调试“常规保护异常”?

时间:2010-09-10 17:47:57

标签: c++ debugging exception

我遇到了“一般保护例外”的未处理例外。虽然程序运行但没有输出。

我想知道我可以做些什么来调试这样的例外?

感谢

2 个答案:

答案 0 :(得分:2)

是的,如果您无法在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

通过使用两个输出字符串进行二进制搜索来查看哪一行导致问题,以查看崩溃发生的位置。最终你应该看到你的第一行打印而第二行不打印,然后你知道两个输出字符串之间可能出现了问题。然后你可以在逻辑上(以二进制搜索模式)移动它们,直到你得到它们围绕一行代码,只打印第一行,然后你可以怀疑它们之间的实际代码行。

答案 1 :(得分:0)

尝试使用msft的调试diags。这将运行一项服务,监控您的应用程序,并在您获得gpe时创建userdump。然后,您可以将转储加载到windbg中,并查看发生异常时发生的情况。