调试时如何“运行直到此变量更改”?

时间:2011-06-13 16:34:47

标签: c# debugging variables visual-studio-express watch

在调试我的C#时,我经常想知道当变量值改变时 ,然后调查程序的状态。

目前,我这样做:

  1. 观察列表违规变量。
  2. 物理垃圾邮件F10 (Step Over的快捷方式),直到我看到值更改为止。
  3. 但是,所需的F10数量很烦人。

    我想,这当然是自动化的。但我无法在我的 Microsoft Visual C#Express 中找到此功能,这让我感到惊讶。毕竟,监视列表 会自动以亮红色突出显示已更改的值。

    我错过了什么吗?

8 个答案:

答案 0 :(得分:21)

Express版的简单技巧:

private string myValue;
public string MyValue
{
  set
  {
    if (this.myValue != value) Debugger.Break();
    this.myValue = value;
  }
}

答案 1 :(得分:6)

Conditional breakpoints就是你所追求的,但它似乎在Visual Studio Express中不可用。

在Visual Studio(非Express)中,它的工作方式是创建一个条件断点,其表达式等于您的监视值,并且“已更改”作为断点条件。

答案 2 :(得分:0)

以下是我在Visual Studio中的操作方法。按F9或单击最左边距设置断点。然后右键单击出现的红点并选择Condition命令。还有其他选择。

但是,Visual Studio Express可能不支持此功能。

答案 3 :(得分:0)

您可以使用条件断点

请参阅this

答案 4 :(得分:0)

您可以编写一个if语句来检查更改并在if语句中发生断点,因此它最初会中断,然后单击resume,它会一直持续到达到此断点。

答案 5 :(得分:0)

根据某些运行时条件使用Debugger.Break,或右键单击某个断点,然后选择条件中断 - >已经改变了

编辑:在Express

中关于此的dunno

答案 6 :(得分:0)

  1. 设置您希望代码暂停的断点
  2. 打开Breakpoints窗口(Debug - > Windows - > Breakpoints)
  3. 右键单击断点并选择条件...
  4. 将条件设置为变量名称,然后选择“已更改”单选按钮。
  5. 单击“确定”,然后按照正常情况进行调试:)

答案 7 :(得分:0)

如果要在某个断点处捕获变量更改,而不是准确捕获更​​改位置,请设置断点,右键单击它并选择“条件”。假设你的变量名是X,它的当前值是A.在条件字段中输入“X!= A”。

现在只有在X改变为A以外的某个值后才会触发断点。