c - 变量取一定值时的断点

标签 c visual-studio visual-studio-2008 debugging

我有类似于以下代码的东西......

void function(int x)
{
    // complicated operation on x
    blah 
    blah
}

除了 x 恰好是一个特定值(例如“273”)外,一切似乎都运行良好。但是 x 为 273 是一个罕见的事件,99.999% 的时间它是其他值。现在我想观察当这个函数被 x=273 调用时的事件,所以我想插入一个断点,只有 x 是那个值。也许我可以这样做:

void function(int x)
{
    if (x == 273)
    {
        // put breakpoint on this line.
    }
    // complicated operation on x
    blah 
    blah
}

问题是编译器可能会优化这个“if”语句,因为它什么都不做。所以我的问题是我应该在“if”语句中放入什么以确保它被编译成某种东西......或者我应该以某种完全不同的方式追踪 x==273 的情况。

最佳答案

听起来您正在寻找的是条件断点。这些是 Visual Studio 的一项功能,它允许仅在非常特定的条件为真时才命中断点。

为此,在函数的开头放置一个断点。然后右键单击它并选择“条件”。然后添加以下表达式

x == 273

现在您可以在不更改源二进制文件的情况下对其进行调试。

关于c - 变量取一定值时的断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2494231/

相关文章:

sql - 没有从 SQlite 表中提取任何内容?

python - Visual Studio Code : "matplotlib" is not accessed Pylance

c# - 何时在 EF Core 中使用异步方法?

javascript - 用于开源 NativeScript 的 AppBuilder VS 插件

visual-studio-2008 - 如何从 MSBuild 将消息输出到 Visual Studio 输出窗口?

c - 如何使用 "##"定义多个相似的宏?

c - 重启参数 RB_HALT_SYSTEM 和 RB_POWER_OFF 有什么区别?

c++ - 三次贝塞尔曲线实现

c++ - 编译器 PDB 文件和链接器 PDB 文件

visual-studio-2008 - 在 Visual Studio 2008 中使用自定义安装程序时出现错误 1001