23

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

目前,我这样做:

  1. 监视有问题的变量。
  2. 物理垃圾邮件 F10(Step Over 的快捷方式),直到我看到值发生变化。

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

我想,这肯定是自动化的。但是我在我的Microsoft Visual C# Express中找不到这个功能,这让我很吃惊。毕竟,观察列表自动以鲜红色突出显示更改的值。

我错过了什么吗?

4

8 回答 8

22

Express版的简单技巧:

private string myValue;
public string MyValue
{
  set
  {
    if (this.myValue != value) Debugger.Break();
    this.myValue = value;
  }
}
于 2011-06-13T16:38:17.050 回答
6

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

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

于 2011-06-13T16:37:19.773 回答
1
  1. 设置您希望代码暂停的断点
  2. 打开断点窗口(调试 -> 窗口 -> 断点)
  3. 右键单击断点并选择条件...
  4. 将条件设置为变量名称,然后选择 Has Changed 单选按钮。
  5. 单击确定,然后正常调试:)
于 2011-06-13T16:44:23.193 回答
0

这是我在 Visual Studio 中的操作方法。通过按 F9 或单击最左边的空白来设置断点。然后右键单击出现的红点并选择条件命令。那里还有其他选择。

但是,这在 Visual Studio Express 中可能不受支持。

于 2011-06-13T16:37:30.783 回答
0

你可以使用条件断点

看到这个

于 2011-06-13T16:37:39.037 回答
0

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

于 2011-06-13T16:37:39.110 回答
0

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

编辑:在 Express 中不知道这个

于 2011-06-13T16:40:03.463 回答
0

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

现在断点只会在 X 更改为 A 以外的某个值后被命中。

于 2011-06-13T16:45:18.843 回答