【问题标题】:C++: continue after __debugbreak(), or better alternativeC++:在 __debugbreak() 之后继续,或者更好的选择
【发布时间】:2011-02-06 22:13:33
【问题描述】:

我正在使用 Visual Studio 开发一个 C++ 库,并且在我的代码中有些地方检查了一些条件。如果这些条件失败,则会引发异常。为了帮助我调试,我放了一个

__debugbreak();

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

但是,有时我可能只想继续执行(例如,如果 __debugbreak(); 不存在)并抛出异常(记录错误并执行其他操作)。

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

如何做到这一点?

【问题讨论】:

    标签: c++ visual-studio


    【解决方案1】:

    似乎比使用这个特定的库函数更好的选择是在调试器中运行程序并在要暂停执行以进行测试的位置放置断点。在中断中硬编码以捕获到调试器中意味着您可能会不小心将代码发布给其中仍有调试钩子的客户端,并且还可以让您对何时以及如何停止执行和开始调试进行更精细的控制。

    【讨论】:

      【解决方案2】:

      在 Microsoft C 运行时使用 _ASSERT and _ASSERTE macros。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-20
        相关资源
        最近更新 更多