【问题标题】:Pause execution when a watch variable changes?监视变量更改时暂停执行?
【发布时间】:2013-02-14 11:34:53
【问题描述】:

当监视变量(不是属性,只是普通变量)更改以查看更改发生的位置时,是否可以中断执行?我搜索并找到了this question,它与似乎不是我想要的属性有关。

这个变量在几千行代码中多次使用,但只有在出现问题时才从null更改。我们正在努力追查这个问题。

【问题讨论】:

标签: c# visual-studio-2010 debugging


【解决方案1】:
  1. 围绕变量创建断点 (f9)
  2. 右击断点的红圈,点击“Condition...”
  3. 输入变量的名称,然后将单选更改为“已更改”
  4. 断点现在应该有一个+,以表明它是有条件的

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

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
        }
    }
}

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

【讨论】:

  • 条件断点在您放置它们的行上中断...我不明白这将如何导致它在变量实际更改的位置中断。 set 方法有效,但尝试了前者,但它没有。
  • 优秀的解决方案!结合调用堆栈实现此方法效果很好。
  • 这是 Visual Basic 6 的一大优点。您可以将其设置为在变量更改时中断,无论它位于哪一行。
猜你喜欢
  • 2013-04-14
  • 2023-01-04
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 2016-09-08
相关资源
最近更新 更多