本篇體驗Visual Studio的10個調試技巧,包括:
1、插入斷點和斷點管理
2、查看變量信息
3、逐語句F11,逐過程F10,跳出Shift+F11
4、查看堆棧信息
5、設置下一條執行語句
6、調試時修改局部變量並繼續調試
7、線程管理
8、為斷點設置條件
9、使用命令窗口測試方法
10、變量的歷史記錄
有這樣的一個Person類:
public class Person{public string Name { get; set; }public int Age { get; set; }public bool IsOlderThanOrEqualTo(){if (Age >= 18){return true;}else{return false;}}public void PrintAge(){for (int i = 0; i < Age; i++){Console.Write("*");}}public int CalculateDogAge(){int dogAge = 0;dogAge = Age*7;return dogAge;}public void MethodA(){MethodB();}public void MethodB(){MethodC();}public void MethodC(){}}
客戶端調用:
class Program{static void Main(string[] args){Person p = new Person();p.Name = "darren";p.Age = 22;int a = 10;//調試方法內int result = p.CalculateDogAge();Console.WriteLine(result);//調試bool類型bool olderThan18 = p.IsOlderThanOrEqualTo();Console.WriteLine(olderThan18);//調試遍歷循環p.PrintAge();p.MethodA();Console.ReadKey();}static int sum(int a, int b){return a + b;}}
1、插入斷點和斷點管理
→右鍵代碼行
→把鼠標移動到某代碼行的任意位置,把鼠標移動到int result = p.CalculateDogAge();
→右鍵,斷點,插入斷點
→代碼行左側多了一個紅色斷點
● 也可通過在代碼行的最左側點擊,添加斷點。
● 可添加多個斷點
● 還可通過:調試→窗口→斷點,對斷點進行管理
2、查看變量信息
→把鼠標移動到變量名上方
→給代碼行打上斷點後運行程序,運行程序,停留在斷點行
→把鼠標移動到變量p的上方,點擊+號可查看變量信息
也可點擊菜單欄中:調試→窗口→自動窗口,在"自動窗口"中查看變量的動態信息。
還可點擊菜單欄中:調試→窗口→局部變量,在"局部變量"中查看所有變量的動態信息。
還可點擊菜單欄中:調試→窗口→監視→監視1,在"監視"中輸入變量名並查看該變量的動態信息。
還可以右鍵變量名,點擊"添加到監視"或"快速監視",以查看變量的動態信息。
3、逐語句F11,逐過程F10,跳出Shift+F11
使用逐語句F11調試,當執行某個方法,會跳轉到方法內部。
使用逐過程F10調試,當執行某個方法,不會跳轉到方法內部。
同時按Shift和F11,會跳轉到當前執行方法的上一級中。
4、查看堆棧信息
在調試過程中,還可以查看堆棧信息。
→把斷點打在int result = p.CalculateDogAge();代碼行
→運行,起初停留在該行
→點擊:調試→窗口→調用堆棧
→當沒有進入CalculateDogAge方法內部時,調用堆棧窗口中指針指向Main方法
→當按F11使用逐語句調試,進入CalculateDogAge方法內部時,調用堆棧窗口中指針指向Person的實例方法CalculateDogAge
→當按F11使用逐語句調試,跳出CalculateDogAge方法,調用堆棧窗口中指針重新指向Main方法
5、設置下一條執行語句
調試時,左側的黃色箭頭圖標表示下一條需要執行的代碼行。我們可以通過拖動黃色箭頭圖標來重新設置應用程序的下一條執行語句。
6、調試時修改局部變量並繼續調試
在調試過程中,當希望修改某個變量,但不想停止本次調試,再生成、調試,怎麼辦?Visual Studio現在允許在調試過程中修改某個變量,並繼續調試。
但,此功能不適合64位計算機,如果64位計算機想使用此功能,需要做到:
→右鍵項目,點擊"屬性"
→點擊"生成"
→在"目標平台"中,選擇"x86"
另外,在調試過程中只能修改局部變量,如果想修改類名,方法名之類,需要停止當前調試再修改。
7、線程管理
在調試過程中,點擊:調試→窗口→線程,可查看線程的動態信息。
8、為斷點設置條件
→ 右鍵斷點,點擊"條件",輸入如下:
也就是設置,當局部變量a為100時,才進入該斷點。
→由於局部變量實際值是10,所有不會進入該斷點,最終直接輸出了結果。
9、使用命令窗口測試方法
點擊:視圖→其它窗口→命令窗口,輸入如下:
10、變量的歷史記錄
有時候,希望把某一個變量在循環遍歷過程中所有的值都記錄下來。
class Program{static void Main(string[] args){TestMakeObjectId();}private static void TestMakeObjectId(){List<string> strs = new List<string>();strs.Add("Hello");strs.Add("World");foreach (string str in strs){Console.Write(str + " ");}Console.ReadKey();}}
→在Console.Write(str + " ");代碼行打上斷點,運行。
→把鼠標移動到變量str上,右鍵,點擊"添加監視",得到如下:
→右鍵監視窗口中變量str所在行,點擊"創建對象ID"
得到如下:
→在監視窗口中另起一行,名稱是1#,其對應的值自動變為"Hello",即記錄下變量str在第一次遍歷時的值。
→逐語句F11,str的值變成"World",1#的值不變。於是變量str在整個遍歷循環過程中的值都被記錄下來。
參考資料:
10+ powerful debugging tricks with Visual Studio
Advanced Debugging in Visual Studio
在調用自定義函數的那句代碼上加個斷點(F9),然後直接調試(F5),就會先在加斷點的位置暫時停住,接下來可以單步調試(F10),或者進入函數內部調試(F11)。
還可以在多個重要的位置加斷點直接調試。
紅色箭頭就是開始調試按鈕,粉紅箭頭(框)就是調試選項。在代碼中下斷點,然後點擊開始調試,調試選項就自動出來了!