监视变量更改时暂停执行?

lda*_*dam 4 c# debugging visual-studio-2010

当监视变量(不是属性,只是普通变量)发生变化时,是否可以中断执行以查看更改发生的位置?我搜索并发现这个问题与看起来不像我正在寻找的属性有关.

此变量在几千行代码中多次使用,但仅null在问题发生时才更改.我们正试图追踪这个问题.

Mar*_*ell 5

  1. f9在变量周围创建一个断点()
  2. 右键单击断点的红色圆圈,然后单击"条件..."
  3. 输入变量名称,并将收音机更改为"已更改"
  4. 断点现在应该有一个+表示它是有条件的

但是:坦率地说,我发现以下更简单,更有效 - 特别是对于田地; 说我们开始:

string name;
Run Code Online (Sandbox Code Playgroud)

我们改变它只是现在到:

private string __name;
string name {
    get { return __name; }
    set { __name = value; }
}
Run Code Online (Sandbox Code Playgroud)

并且只是在线上设置一个断点set.它仍然应该编译,你可以轻松地看到变化.对于更复杂的情况:

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

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