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

Del*_*ate 43 .net debugging breakpoints conditional-breakpoint visual-studio

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

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

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

Jar*_*Par 85

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

  • 在变量变化点设置断点
  • 右键单击断点并选择"条件"
  • 输入条件,如"theNewValue == 42"

现在断点只会在条件求值为true时触发.

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

  • @Delashmate它是CLR调试基础设施的一个限制.在CLR提供功能之前,Visual Studio的手基本上是绑定的 (3认同)
  • @Delashmate只是一个时间/价值权衡.没有任何功能上的原因他们无法支持它.到目前为止,实施它所需的时间与它们认为可提供的价值相比已经达到了很大的水平.FWIW:我希望他们会支持它.但我也希望他们提供ENC 64位. (2认同)

Ric*_*ett 6

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

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

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

要访问“已更改”选项,请右键单击“断点”窗口中的断点并选择“条件...”,然后检查下面的屏幕截图。

已更改断点条件选项