下面是我故意造成2个NullPointerException的代码片段。第一个是处理。而第二个没有处理。我想在发生崩溃时在第二个异常上创建一个崩溃转储。
int* nullPtr = NULL;
try{
x = *nullPtr;
}
catch(...) {
QLOG_WARNING0(QTEXT("catching 1st null ptr exception."));
}
y = *nullPtr;
这会导致进程崩溃,但转储不会仅使用-e选项生成。 我应该使用哪些选项来获得转储?
或者有没有办法用debugDiag工具实现这个目的?如果是这样,怎么样?
这只是一个示例代码。我正在调试的实际用例有一个进程崩溃但我无法为崩溃进行转储。有一些有效的处理异常,如果我使用第一次机会选项( - e 1),转储将被触发。这导致procdump在实际崩溃发生之前退出。
答案 0 :(得分:0)
“我不接受任何其他工具。”
根据您的评论,还有其他方法可以捕获转储文件。在我对Getting detailed crash dumps from a hooked exe, 的回答中,您将看到可以设置一些注册表项设置来从未处理的异常中捕获转储。这些设置假设您启用了Windows错误报告 。我甚至将这些设置合并到我公司在调试困难的客户崩溃时使用的小型实用程序中。