2010-06-22 35 views
13

我在我的代碼中添加了一個斷點。當調試器停在斷點處時,我想要做的是修改列表的內容(特別是在這種情況下,我想添加條目)。如何在調試時修改列表的內容?在Visual Studio中調試時將條目添加到列表中

編輯:該列表是一個字符串列表。

回答

25

使用立即窗口(默認爲CTRL + D,I用C#鍵綁定,或者它在Debug> Windows菜單中)。

從那裏剛剛調用myList.Add(foo),它會回來說表達式已經被評估過,沒有任何價值,但是會發生添加foo的副作用。

2

同樣在觀察窗口中,您可以執行單行語句(或更好的表達式)。

只寫類似:

myList.Add("myNewValue") 

並按ENTER 應該作品(至少一直爲我工作)

+0

是的,也是有效的。這兩種方法都有不支持lambda表達式的限制。我真的希望VS2010 SP1修復這個問題。 – 2010-06-22 14:30:05

+0

不幸的是,VS2010並沒有解決這個問題(我試過了),以及關於使用lamba表達式的方法的編輯和繼續問題。我認爲他們是非常相關的(如果不相同)並且不易實施 – digEmAll 2010-06-22 15:10:21

2

還有就是你可以用它來從內注入代碼的技術斷點。這很容易,而且很有效。

  1. 設置斷點
  2. 在斷點右鍵單擊,選擇「條件」
  3. 把你的代碼行中的條件(它沒有返回一個布爾)
  4. 運行

當你的斷點被擊中時,代碼將會執行,並且調試器不會停在斷點上(因爲你沒有返回一個布爾值)。

我從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") 

現在運行。

很顯然,一個人可能會遇到很多這個「功能」的麻煩 - 你可以用斷點來改變你的應用程序的行爲,這樣代碼的獨立構建的行爲與它在你的機器上運行的行爲有所不同在你的調試器中。所以,要非常小心......

相關問題