我有类似于以下代码的东西......
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/