代码之家  ›  专栏  ›  技术社区  ›  sharkin

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

  •  1
  • sharkin  · 技术社区  · 14 年前

    在unittest序列中,我正在测试是否捕获到数据损坏错误(故意提供损坏的数据)。

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

    2 回复  |  直到 14 年前
        1
  •  3
  •   Hans Passant    14 年前

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

    无论哪种情况,你都不知道程序在心脏病发作时处于什么状态。最好的方法是设置一个命名事件,并让主进程终止该进程。

        2
  •  0
  •   Kate Gregory    14 年前

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