变量占用某个值时的断点

Mic*_*ick 4 c debugging visual-studio-2008 visual-studio

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

void function(int x)
{
    // complicated operation on x
    blah 
    blah
}
Run Code Online (Sandbox Code Playgroud)

这一切看起来都很好,除非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
}
Run Code Online (Sandbox Code Playgroud)

问题是,编译器可能会优化掉这个"if"语句,因为它没有做任何事情.所以我的问题是我应该在"if"语句中放置什么以确保它被编译成某种东西......或者我应该以某种完全不同的方式跟踪x == 273的情况.

Jar*_*Par 8

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

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

x == 273
Run Code Online (Sandbox Code Playgroud)

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