Visual Studio 調試(系列文章)
- 2019 年 10 月 4 日
- 筆記
調試是軟體開發過程中非常重要的一個部分,它具挑戰性,但是也有一定的方法和技巧。
Visual Studio 調試程式有助於你觀察程式的運行時行為並發現問題。 該調試器可用於所有 Visual Studio 程式語言及其關聯的庫。 使用調試程式時,可以中斷程式的執行以檢查程式碼、檢查和編輯變數、查看暫存器、查看從源程式碼創建的指令,以及查看應用程式佔用的記憶體空間。
本系列以 Visual Studio 2019 來演示調試的方法和技巧。希望能幫助大家掌握這些技巧。它們都很簡單,卻能幫你節約大量的時間。
調試方法與技巧
Visual Studio 調試系列1 Debug 與 Release 模式
Visual Studio 調試系列4 單步後退來檢查舊應用狀態(使用使用 IntelliTrace 窗口)
Visual Studio 調試系列5 檢查變數(使用自動窗口和局部變數窗口)
Visual Studio 調試系列6 監視變數(使用監視窗口和快速監視窗口)
Visual Studio 調試系列7 查看變數佔用的記憶體(使用記憶體窗口)
Visual Studio 調試系列8 查找導致程式崩潰的 DLL(使用模組窗口)
Visual Studio 調試系列10 附加到正在運行的進程
Visual Studio 調試系列12 遠程調試部署在遠程電腦IIS上的ASP.NET應用程式
示常式序
後續的調試以下面的程式為示例進行演示說明。
1 using System; 2 using System.Collections.Generic; 3 4 namespace Demo002_NF45_CS50 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 var shapes = new List<Shape> 11 { 12 new Triangle(4,3), 13 new Rectangle(7,4), 14 new Circle(), 15 16 }; 17 18 foreach (var shape in shapes) 19 { 20 shape.Width = 10; 21 shape.Draw(); 22 23 int num1 = 2, num2 = 0; 24 num1 = num1 / num2; 25 26 Console.WriteLine(); 27 } 28 29 Console.WriteLine("Press any key to exit."); // 在調試模式下保持控制台打開 30 Console.ReadKey(); 31 } 32 } 33 34 #region 調試示例 35 36 /// <summary> 37 /// 繪圖類(基類) 38 /// </summary> 39 public class Shape 40 { 41 #region 屬性 42 43 /// <summary> 44 /// X 軸坐標 45 /// </summary> 46 public int X { get; private set; } 47 48 /// <summary> 49 /// Y 軸坐標 50 /// </summary> 51 public int Y { get; private set; } 52 53 /// <summary> 54 /// 圖形高度 55 /// </summary> 56 public int Height { get; set; } 57 58 /// <summary> 59 /// 圖形寬度 60 /// </summary> 61 public int Width { get; set; } 62 63 #endregion 64 65 // 繪製圖形(虛方法) 66 public virtual void Draw() 67 { 68 Console.WriteLine("Performing base class drawing tasks");// 執行基類繪圖任務 69 } 70 } 71 72 /// <summary> 73 /// 圓形 74 /// </summary> 75 class Circle : Shape 76 { 77 public override void Draw() 78 { 79 Console.WriteLine("Drawing a circle"); // 繪製一個圓 80 base.Draw(); 81 } 82 } 83 84 /// <summary> 85 /// 矩形 86 /// </summary> 87 class Rectangle : Shape 88 { 89 public Rectangle() 90 { 91 92 } 93 94 public Rectangle(int width, int height) 95 { 96 Width = width; 97 Height = height; 98 } 99 100 public override void Draw() 101 { 102 Console.WriteLine("Drawing a rectangle"); // 繪製一個矩形 103 base.Draw(); 104 } 105 } 106 107 /// <summary> 108 /// 三角形 109 /// </summary> 110 class Triangle : Shape 111 { 112 public Triangle() 113 { 114 115 } 116 117 public Triangle(int width, int height) 118 { 119 Width = width; 120 Height = height; 121 } 122 123 public override void Draw() 124 { 125 Console.WriteLine("Drawing a trangle");// 繪製一個三角形 126 base.Draw(); 127 } 128 } 129 130 #endregion 131 }