没有对话就退出堆腐败

时间:2013-08-01 21:12:27

标签: c++ visual-studio-2012

在可能在无人值守的构建机器上运行的单元测试中,“unittest.exe已停止工作”并且调试中断时会弹出其他对话框并不好。我已经使用以下函数来抑制大部分函数,​​SetUnhandledExceptionFiltersignal等等,以安装打印失败测试的处理程序和堆栈跟踪。

_set_abort_behavior(0, _WRITE_ABORT_MSG); // Disable abort message.
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); // CRT asserts go to stderr.
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); // CRT asserts go to stderr.

不幸的是,我发现在发生错误后打印消息或堆栈跟踪时,有时会检测到堆损坏,这会导致“unittest.exe已停止工作”对话。这已经在我未处理的异常过滤器中了,所以可以理解的是它不能再调用它了!

有没有办法抑制这种行为,而只是直接退出自定义错误代码?或者也许是一种更聪明的方法来处理这种情况?

0 个答案:

没有答案