我抛出了一个throw std::exception("dummy")
没有在任何地方被捕获的异常(作为测试)。
如果没有附加 ProcDump,这会立即使进程崩溃。
当我将 ProcDump 附加-e
到调试版本时,ProcDump 正确检测到未处理的异常,创建故障转储并退出。但是程序继续执行,就好像从未抛出异常一样。
我可以在 ProcDump 退出后手动使进程崩溃,但我真的不喜欢代码在崩溃后继续运行的想法,这种崩溃应该是致命的,即使它只是几毫秒。
这是什么原因造成的?如何确保我的程序崩溃(并且崩溃转储正确地代表了崩溃点)?这是 ProcDump 的问题还是我如何使用它?
这是重现此问题的最小示例:
#include <iostream>
int main() {
char c;
std::cin >> c;
if (c == 'e')
throw std::exception("dummy");
std::cout << "clean exit" << std::endl;
return 0;
}
我已经用 m$ clang-cl 和 msvc 试过了。我已经尝试了每一个 ProcDump 开关,甚至在与多个二进制文件的所有可能组合中都与我的问题模糊相关。