我正在使用Visual Studio 2010,并且我知道此功能在C++中可用。当变量在.NET中获取特定值时,我可以设置断点吗?
我需要调试一些代码,将变量更改为多个值。我想在特定情况下调试代码,当变量获取特定值时。我知道我可以添加if(var == value)
,但是有没有优雅的方法可以做到这一点?
另一个问题,我可以设置一个断点,当一个变量一般被改变?
我正在使用Visual Studio 2010,并且我知道此功能在C++中可用。当变量在.NET中获取特定值时,我可以设置断点吗?
我需要调试一些代码,将变量更改为多个值。我想在特定情况下调试代码,当变量获取特定值时。我知道我可以添加if(var == value)
,但是有没有优雅的方法可以做到这一点?
另一个问题,我可以设置一个断点,当一个变量一般被改变?
这当然是可以设置的条件就像接收某个值的变量一样。这被称为断点条件。要创建一个,请执行以下操作。
现在,只有当条件计算结果为真时,断点才会出现。
您要求的第二个项目,当变量值因任何原因而发生变化时中断,称为数据断点。这些仅适用于C++代码。这不是C#中的选项,VB.NET或任何其他托管语言。
只要您使用Express以外的Visual Studio版本,则可以使用breakpoint condition在C#中实现此目的。
在断点条件对话框中,输入在条件框中输入一个有效的表达,如myLocalVariable> 1
和
...选择先后换过如果当表达式的值发生变化时你想中断。
要到先后换过选项,在断点窗口中右键单击您的断点,然后选择条件...,然后检查下面的截图。
好了,现在我明白了,我一直在寻找的,当变量一般得到了改变得到通知,意味着创建数据断点..这样,它是更普遍.. – Delashmate
你可以有一个计时器来检查这个 – beppe9000
添加断点与F9 - 右键单击它并选择"Condition..."
- 现在你可以添加一个布尔条件,如果该条件的计算结果为真,断点将只被打到。
你可以做这两件事情。
var==value
并选择“是真的”。这取决于你的断点的范围。如果变量不是本地的或不是静态的,你将无法做到。
要设置断点的情况下,右键单击它,你应该得到这个画面:
选择条件 ...
您可以使用条件断点。我知道你的问题是针对VS2010的,但是请注意,从VS2012开始,你必须切换到托管兼容模式,才能在Visual Basic中使用条件断点。为什么以及如何描述如下:
switching-to-managed-compatibility-mode-in-visual-studio-2013
你知道为什么数据断点在托管语言中不可用吗? – Delashmate
@删除它是CLR调试基础设施的限制。 Visual Studio的手基本上是捆绑在一起的,直到CLR提供能力 – JaredPar
好吧,我希望它不是那么复杂的问题,为什么CLR不支持这个选项? – Delashmate