【问题标题】:How to ignore Windows "Debug Error!" dialogs in automated tests如何忽略 Windows“调试错误!”自动化测试中的对话框
【发布时间】:2013-01-22 23:42:16
【问题描述】:

我有一个测试套件,它运行带有各种命令行选项的 Windows 可执行文件,以测试可执行文件是否正常工作。在某些测试用例中,这些参数会导致可执行文件严重损坏并出现以下对话框:

很遗憾,此对话框一直存在,直到我手动按 AbortRetryIgnore。这使我无法以自动化方式运行这些测试。我尝试通过带有各种 CDB 选项的 Windows CDB 调试器调用可执行文件,但没有成功。

如何防止这些对话框出现或自动继续测试?

【问题讨论】:

    标签: windows debugging automated-tests


    【解决方案1】:

    从窗口标题可以清楚地看出,您正在测试程序的 Debug 版本。这不是一个好的做法,您没有按照程序在客户机器上运行的方式对其进行测试。 Debug 版本适合程序员调试他们的代码。但它偶尔会隐藏一个错误。此类错误可能很难诊断,您需要进行测试以清除它们。你没有进行这样的测试。

    仅测试发布版本。然后它也自动解决了这个对话框问题,CRT的Release版本不显示它。

    顺便说一句:测试失败。

    【讨论】:

    • 很好地发现我正在测试一个 Debug 可执行文件......我没有意识到它们会以明显不同的方式工作。一旦我开始测试 Release 可执行文件,我就开始获得正常的“Windows 错误报告”对话框,我可以通过将可执行文件包装在 CDB 中来捕获和忽略这些对话框。谢谢!
    【解决方案2】:

    the Microsoft C Runtime Library manual page on abort() 中所述,当您链接到 Microsoft CRT 的调试版本时,会出现此消息框。您可以链接到发布 CRT 以避免该消息,但 Windows 将捕获崩溃(因为 abort() 被 CRT 认为是程序崩溃)并且您会看到 Windows 错误报告消息。

    手册页还说,您可以使用 the Microsoft-extension _set_abort_behavior() function. 在代码中禁用消息框.

    【讨论】:

      猜你喜欢
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 2011-01-10
      • 2018-10-26
      • 2022-11-23
      • 2020-06-14
      • 2020-04-14
      相关资源
      最近更新 更多