我有兴趣在断言中改进两种情况。 1)定期启动调试构建应用程序,如果有断言,我将收到“调试断言失败”对话框,其中包含“Abort”,“Retry”,“Ignore”。中止和忽略答案工作正常。重试的问题。如果我点击重试我会得到那个无用的“应用程序错误,已达到断点”“确定” - 终止,“取消” - 调试程序。
是否可以避免此对话框并直接转到显示调试器选项的“及时调试器”对话框?我知道“应用程序错误”对话框是由英特尔上的__debugbreak()
或_asm int 3
触发的,因此在按下“重试”后我需要在不使用_asm int的情况下附加调试器。这可能吗?我找不到任何这样做的WinAPI
2)在VS调试器中启动调试构建应用程序(使用F5)。如果触发了断言,我不希望看到任何对话框,我希望它在断言上停止。我设法安装了crt调试运行时挂钩,如果是IsDebuggerPresent,那么我__debugbreak()并且它在断言的行上停止。当我调试Windows移动版本时,它工作正常,但我仍然得到Win32版本的对话框:“APP.exe已触发断点”,“中断”,“继续”,并显示“忽略”。有什么方法可以完全禁用它吗?
答案 0 :(得分:2)
查看注册表项HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug。
我认为如果将Auto设置为1,则会自动启动调试器。
当然,改变assert实现也可以帮助你(从他着名的Debugging Windows Applications书中看看John Robbins的SuperAssert)。