我的代码中有一点我添加了一个断点。当调试器在断点处停止时,我想要做的是修改列表的内容(特别是在这种情况下,我想添加条目)。如何在调试时修改列表的内容?
编辑:列表是字符串列表。
答案 0 :(得分:26)
使用即时窗口(默认为CTRL + D,我使用C#键绑定,或者在调试> Windows菜单中)。
从那里只调用myList.Add(foo)
,它会回来说表达式已被评估并且没有值,但是发生添加foo的副作用。
答案 1 :(得分:2)
同样在监视窗口中,您可以执行单行语句(或更好的表达)。
只需写下:
myList.Add("myNewValue")
并按ENTER
它应该有效(至少一直对我有用)
答案 2 :(得分:2)
有一种技术可用于从断点内注入代码。它很简单,而且很有效。
当你的断点被击中时,代码将被执行,调试器不会在断点上停止(因为你没有返回bool)。
我从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")
现在跑。
显然,一个人可能会遇到很多这个“功能”的问题 - 您可以使用断点更改应用程序的行为,使得代码的独立构建行为与在您的计算机上运行时的行为不同你的调试器。所以,要非常小心......