使用Win32 :: CreateProcess时如何吞下崩溃报告

时间:2010-08-26 08:59:43

标签: winapi process

在单元测试序列中,我正在测试是否捕获到数据损坏错误(故意输入损坏的数据)。

为了将程序崩溃(例如,损坏的数据+差的缓冲区管理)视为常规的失败条件,我使用CreateProcess在子进程中运行程序。我的问题是,如果它崩溃,我会从Windows获得崩溃报告对话框,我必须关闭它才能继续进行测试序列。

有没有办法使用CreateProcess以便我可以从Windows中吞下崩溃报告?

2 个答案:

答案 0 :(得分:3)

你无法使用CreateProcess(),子程序必须自己处理它。两种基本方式:

  • 使用__try/__except关键字来捕获和处理SEH例外
  • 使用SetUnhandledExceptionFilter()
  • 注册回调

在任何一种情况下尽量少做,你不知道该程序在遭受心脏病发作时处于什么状态。最好的办法是将SetEvent()作为命名事件,让主进程终止进程。

答案 1 :(得分:0)

可能最好的计划是在测试计算机上关闭Windows错误报告(XP及更早版本的Microsoft错误报告),至少在测试期间。确切的步骤取决于您的Windows版本,但它位于控制面板下。