当变量呈现一定值断点

我有一些类似于下面的代码...

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 }

问题是,想必编译器会优化掉这个“如果”的声明,因为它没有做任何事情。 所以我的问题是我应该把“如果”语句中,以确保它被在编译的东西......或者我应该跟踪在x == 273的情况下以某种方式完全不同。

--------------解决方案-------------

这听起来像你要找的是什么条件断点。 这是Visual Studio中允许只被打了一个破发点时,一个非常具体的条件为true的一个特点。

要做到这一点,把一个破发点,在该函数的开始。 然后右键单击它,选择“状态”。 然后添加下面的表达式

x == 273

现在,您可以调试这一点没有改变你的源代码的二进制文件。

也许只是使用条件断点? 看看这里怎么设置它。

创建新的条件断点(右键点击断点,然后选择“条件...”),并把

x == 273

作为条件。

if (x == 273)
{
volatile int tmp = 0; // This is not get optimized
}

在情况下,当我需要一个真正的行设置一个断点我使用类似的东西:

{
int i = 42;
}

它得到优化,但我可能会得到一个编译器警告未使用的变量。 但一个条件断点(其他的答案)可能是在这种情况下更好

分类:C# 时间:2012-01-01 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.839 (s). 10 q(s)