我有一个测试套件,它运行带有各种命令行选项的Windows可执行文件,以测试可执行文件的正常工作。在一些测试案例,这些参数使可执行破裂严重,并出现该对话框:如何忽略Windows“调试错误!”自动化测试中的对话框
不幸的是,这个对话框将保持,直到我手动按中止,重试,或忽略。这阻止了我以自动化的方式运行这些测试。我曾尝试通过Windows CDB调试器与各种CDB选项调用可执行文件,但都没有运气。
如何防止这些对话框出现或自动继续进行测试?
我有一个测试套件,它运行带有各种命令行选项的Windows可执行文件,以测试可执行文件的正常工作。在一些测试案例,这些参数使可执行破裂严重,并出现该对话框:如何忽略Windows“调试错误!”自动化测试中的对话框
不幸的是,这个对话框将保持,直到我手动按中止,重试,或忽略。这阻止了我以自动化的方式运行这些测试。我曾尝试通过Windows CDB调试器与各种CDB选项调用可执行文件,但都没有运气。
如何防止这些对话框出现或自动继续进行测试?
从窗口标题可以清楚地看到,您正在测试程序的Debug版本。这不是一个好的做法,你不是按照它在客户机器上运行的方式来测试程序。一个Debug版本适合程序员调试他的代码。但它偶尔会出现隐藏的一个错误。这些错误可能很难诊断,您需要测试才能将其清除。你没有进行这样的测试。
只测试发布版本。这也自动解决了这个对话框的问题,CRT的Release版本不显示它。
顺便说一句:测试失败。
如在the Microsoft C Runtime Library manual page on abort()
中所记录的,当您链接到Microsoft CRT的调试版本时,会出现此消息框。您可以链接到发行版CRT以避免该消息,但是Windows会捕获崩溃(因为CRT会导致abort()被程序崩溃),您将看到Windows错误报告消息。
手册页还指出,您可以使用the Microsoft-extension _set_abort_behavior()
function.禁用代码中的消息框如果转到该路由,可能需要使用命令行开关或类似的方法来控制是否启用消息。
不错的工作捕捉,我正在测试一个调试可执行文件......我没有意识到,他们会以明显不同的方式工作。只要我开始测试Release可执行文件,我就开始获得正常的“Windows错误报告”对话框,我可以通过将可执行文件包装到CDB中来捕获和忽略这些对话框。谢谢! – Brian