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

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

目前,我这样做:

  1. 观察有问题的变量。
  2. 物理垃圾邮件F10 (Step Over的快捷方式),直到我看到值更改。

但是,所需的F10数量令人讨厌。

我想,这当然是自动化的。 但我在我的Microsoft Visual C#Express中找不到这个function,这让我感到惊讶。 毕竟,监视列表自动突出显示亮红色的更改值。

我错过了什么吗?

Express版的简单技巧:

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

条件断点就是您所追求的,但它似乎在Visual Studio Express中不可用。

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

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

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

你可以使用条件断点

看到这个

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

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

编辑:关于Express的dunno

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

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

现在断点只会在X变为A以外的某个值后才会被击中。