【问题标题】:How to capture crash dump for unhandled exception using procdump如何使用 procdump 捕获未处理异常的故障转储
【发布时间】:2016-10-29 12:44:35
【问题描述】:

下面是一段代码 sn-p,我故意在其中引发 2 NullPointerException。第一个被处理。而第二个没有处理。我想在发生崩溃时为第二个异常创建崩溃转储。

int* nullPtr = NULL;
try{
    x = *nullPtr;
} 
catch(...) {
    QLOG_WARNING0(QTEXT("catching 1st null ptr exception."));
}
y = *nullPtr;

这确实会使进程崩溃,但转储不是仅使用 -e 选项生成的。 我应该使用哪些选项来获取转储?

或者有什么方法可以使用 debugDiag 工具实现这一点?如果有,怎么做?

这只是一个示例代码。我正在调试的实际用例有一个进程崩溃,但我无法为崩溃进行转储。如果我使用第一个机会选项(-e 1),则会触发转储的有效处理异常。这会导致 procdump 在实际崩溃发生之前退出。

【问题讨论】:

  • 您需要使用 Procdump 吗?还有其他方法可以收集故障转储。
  • 不,我对任何其他工具持开放态度。例如,我确实找到了“debugDiag”,但也无法解决我的目的(鉴于我的专业水平)。使用这些或其他工具可能有出路。

标签: windows crash-dumps


【解决方案1】:

“不,我对任何其他工具持开放态度。”

根据您的评论,还有其他方法可以捕获转储文件。在我对Getting detailed crash dumps from a hooked exe, 的回答中,您会看到您可以设置一些注册表项设置来捕获未处理异常的转储。这些设置假定您已启用 Windows 错误报告。我什至将这些设置合并到一个小型实用程序中,我的公司在调试困难的客户崩溃时使用该程序。

【讨论】:

  • 谢谢。这确实帮助了我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
相关资源
最近更新 更多