2013-02-14 44 views
2

当一个监视变量(不是一个属性,只是一个普通变量)发生变化以查看变化发生的位置时,是否有可能中断执行?我搜索并找到了this question,它涉及到它似乎不属于我正在寻找的属性。手表变量改变时暂停执行?

这个变量在几千行代码中被使用了几次,但是它只是在发生问题时从null更改。我们正试图追查这个问题。

+0

这个问题可能的重复:http://stackoverflow.com/questions/7488155/can-i-set-a-breakpoint-when-variable-is-getting-specific-value-in-net – 2013-02-14 11:39:45

回答

5
  1. 在变量的名称,创建一个断点(F9)周围的变量上的断点的红色圆圈
  2. 单击鼠标右键,单击“条件...”
  3. 类型,并改变收音机“改变”
  4. 断点现在应该有它+,表明它是有条件的

但是:坦率地说,我觉得FO更简单,更高效 - 特别是在田间;说我们先从:

string name; 

我们改变它只是现在到:

private string __name; 
string name { 
    get { return __name; } 
    set { __name = value; } 
} 

,只是把一个破发点上set线。它应该仍然可以编译,并且可以轻松地看到更改。对于更复杂的情况:

private string __name; 
string name { 
    get { return __name; } 
    set { 
     if(__name != value) { 
      __name = value; // a non-trivial change 
     } 
    } 
} 

并将断点放在最内行;这会绕过设置字段而不实际更改值的代码。

+0

条件断点打破你放置他们的路线...我不明白这会如何导致它打破变量实际发生变化的地方。 set方法起作用,但是尝试了前者,而不是。 – 2017-07-27 14:34:02

+0

优秀的解决方案!与Call Stack一起实现此方法很好。 – MQuiggGeorgia 2018-01-05 16:56:47