如何根据命中的另一个断点添加条件中断?视觉 C++

Posted

技术标签:

【中文标题】如何根据命中的另一个断点添加条件中断?视觉 C++【英文标题】:How do you add conditional breaking based on another breakpoint being hit? Visual C++ 【发布时间】:2009-05-11 18:47:24 【问题描述】:

我有一堆经常使用的通用代码,我想对它们进行深入研究,以处理特定情况下的错误。

所以我想仅在命中其他断点时才在一组断点上中断。有没有办法在 Visual 2005 中做到这一点?我正在使用 C++ 代码。

谢谢!

【问题讨论】:

【参考方案1】:

请记住,您可以禁用断点 - 禁用第二个断点,等到第一个断点中断,然后启用断点窗口中的第二个 - 每次调试时只需单击两次鼠标... :)

【讨论】:

【参考方案2】:

如果触发逻辑足够复杂,有时我发现添加DebugBreak(); 会更容易。调用源代码。

【讨论】:

【参考方案3】:

让您的第一个断点将某个变量的值更改为一个神奇的值(您可以使用条件断点,使用一个更改变量然后返回 true 的表达式)。然后,当变量处于那个神奇值时,让第二个断点中断。例如,

int debug_flag = 0;

第一个断点条件:

debug_flag = 0xdeadbeef, true

第二个断点条件:

debug_flag == 0xdeadbeef

【讨论】:

断点位于许多不同的代码区域。我想我也许可以使用全局变量。我希望有一些方法可以在不修改代码的情况下做到这一点。 是的,您可能会使用全局变量。如果您只使用该全局变量创建一个新的 .cpp 文件,并安排将其链接到您的程序中,则无需修改任何其他代码。【参考方案4】:

十年后...

执行 OP 想要的一个简单方法是使用即时窗口定义一个全局变量,并按照@chris-jester-young 的建议在断点条件下使用它。

还是帮了我一把。

【讨论】:

以上是关于如何根据命中的另一个断点添加条件中断?视觉 C++的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual C++ 中添加条件断点

无法调试 C++ 可执行文件(“断点当前不会被命中”)

Firebug - 断点未命中

如何中断从 c# interop 调用的 c++ 代码

GDB 断点不会命中模板函数

当前不会命中断点还未为文档加载任何符号——问题探究