当变量在.NET中获取特定值时,我可以设置断点吗?

时间:2011-09-20 16:00:04

标签: .net visual-studio debugging breakpoints conditional-breakpoint

我正在使用Visual Studio 2010,我知道这个功能在C ++中可用。

我需要调试一些代码,将变量更改为多个值。我想在特定情况下调试代码,当变量获得特定值时。我知道我可以添加if(var == value),但有没有优雅的方法呢?

另一个问题,我可以在一般情况下更改变量时设置断点吗?

7 个答案:

答案 0 :(得分:84)

当然可以将条件设​​置为接收特定值的变量。这被称为断点条件。要创建一个,请执行以下操作。

  • 在变量更改的位置设置断点
  • 右键单击断点并选择“条件”
  • 输入条件,例如“theNewValue == 42”

现在只有在条件评估为真时才会触发断点。

您要求的第二项,当变量的值因任何原因发生变化时断开,称为数据断点。这些仅适用于C ++代码。它不是C#,VB.NET或任何其他托管语言的选项。

答案 1 :(得分:4)

只要您使用Express以外的Visual Studio版本,就可以使用breakpoint condition在C#中实现此目的。

  

在“断点条件”对话框中,在“条件”框中输入有效表达式,例如 myLocalVariable> 1

  

...如果要在表达式的值发生变化时中断,请选择已更改

要进入已更改选项,请在断点窗口中右键单击断点,然后选择条件... ,然后检查下面的截图。

Has Changed option for breakpoint conditions

答案 2 :(得分:3)

使用F9添加断点 - 右键单击​​它并选择"Condition..." - 现在您可以添加布尔条件,只有当该条件的计算结果为真时才会触发断点。

答案 3 :(得分:3)

这取决于断点的范围。如果变量不是本地变量或非静态变量,则无法进行。

要设置断点的条件,请右键单击它,然后您应该看到此屏幕:

Enter image description here

选择条件 ...

答案 4 :(得分:2)

您可以使用条件断点。我知道您的问题是针对VS2010的,但请注意,从VS2012开始,您必须切换到托管兼容模式,才能在Visual Basic中使用条件断点。为什么以及如何描述:

switching-to-managed-compatibility-mode-in-visual-studio-2013

答案 5 :(得分:0)

你可以做这两件事。

  1. 在VS中设置断点。右键单击边距中的红点,然后选择添加条件。在那里你可以说var==value并选择“是真的”。
  2. 您可以通过上面的对话框中的“已更改”选项来实现此目的。

答案 6 :(得分:0)

VSCode

在VisualStudio代码中,可以如下设置条件断点:

  1. 单击装订线以创建红点断点

  2. 从左侧工具栏选择“调试”(图标:bug的斜线)

  3. 共有四个部分:变量,监视,调用堆栈和断点

  4. 扩展断点部分,因此您可以see the breakpoints

  5. 右键单击所需的断点

  6. 选择Edit Breakpoint...

  7. 设置条件,然后按键。 例如:
    myvar == 1234

    'stophere' in myvar
    etc

参考文献:

https://code.visualstudio.com/docs/editor/debugging#_conditional-breakpoints