C ++:在__debugbreak()之后继续,或更好的替代方案

时间:2011-02-06 22:13:34

标签: c++ visual-studio

我正在使用Visual Studio开发一个C ++库,我的代码中有一些点可以检查某些条件。如果此类条件失败,则抛出异常。为了帮助我调试,我已经放了一个

__debugbreak();

语句(如asm int 3;)在抛出异常之前,它有效地调用调试器(或指向现有的调试器)到被控制的行停止执行,所以我可以查看变量,调用堆栈等......

然而,有时我可能只想继续执行(如果__debugbreak();)不存在而只是抛出异常(记录错误并做其他一些事情)。

问题是(在调试器外部运行)我刚刚看到一个窗口,说明程序已崩溃,并在关闭或调试它之间进行选择。我想要实现的是在调试(即附加调试器,点到线,中断执行)和继续执行之间进行选择。

怎么做?

2 个答案:

答案 0 :(得分:0)

似乎比使用这个特定的库函数更好的选择是在调试器中运行程序并将断点放在要暂停执行以进行测试的位置。陷入调试器的中断硬编码意味着您可能会意外地将代码发布到仍然存在调试挂钩的客户端,并且还可以对停止执行和开始调试的时间和方式进行更细粒度的控制。

答案 1 :(得分:0)

使用Microsoft C运行时中的_ASSERT and _ASSERTE macro