我在我的代码中添加了一个断点。当调试器停在断点处时,我想要做的是修改列表的内容(特别是在这种情况下,我想添加条目)。如何在调试时修改列表的内容?在Visual Studio中调试时将条目添加到列表中
编辑:该列表是一个字符串列表。
我在我的代码中添加了一个断点。当调试器停在断点处时,我想要做的是修改列表的内容(特别是在这种情况下,我想添加条目)。如何在调试时修改列表的内容?在Visual Studio中调试时将条目添加到列表中
编辑:该列表是一个字符串列表。
使用立即窗口(默认为CTRL + D,I用C#键绑定,或者它在Debug> Windows菜单中)。
从那里刚刚调用myList.Add(foo)
,它会回来说表达式已经被评估过,没有任何价值,但是会发生添加foo的副作用。
同样在观察窗口中,您可以执行单行语句(或更好的表达式)。
只写类似:
myList.Add("myNewValue")
并按ENTER
应该作品(至少一直为我工作)
还有就是你可以用它来从内注入代码的技术断点。这很容易,而且很有效。
当你的断点被击中时,代码将会执行,并且调试器不会停在断点上(因为你没有返回一个布尔值)。
我从Visual Studio提示博客这个提示: http://blogs.msdn.com/b/zainnab/archive/2010/05/04/set-a-complex-breakpoint-condition-vstipdebug0022.aspx
下面是说明了该技术的示例程序:
static void Main(string[] args)
{
List l = new List();
Console.WriteLine(l[0]);
System.Console.ReadLine();
}
如果你运行该代码按,你会得到一个例外。但是,在使用它之前,请添加一个断点以使用Console.WriteLine()行。
的断点单击鼠标右键,选择“条件” 在条件对话框中,添加以下代码:
l.Add("hello")
现在运行。
很显然,一个人可能会遇到很多这个“功能”的麻烦 - 你可以用断点来改变你的应用程序的行为,这样代码的独立构建的行为与它在你的机器上运行的行为有所不同在你的调试器中。所以,要非常小心......
是的,也是有效的。这两种方法都有不支持lambda表达式的限制。我真的希望VS2010 SP1修复这个问题。 – 2010-06-22 14:30:05
不幸的是,VS2010并没有解决这个问题(我试过了),以及关于使用lamba表达式的方法的编辑和继续问题。我认为他们是非常相关的(如果不相同)并且不易实施 – digEmAll 2010-06-22 15:10:21