【问题标题】:C++: how to debug a "General Protection Exception"?C++:如何调试“一般保护异常”?
【发布时间】:2010-09-10 17:47:57
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 是哪个平台? linux、windows还是别的什么?

标签: c++ debugging exception


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-14
      • 2010-12-10
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2018-10-10
      • 2019-06-19
      • 1970-01-01
      相关资源
      最近更新 更多