簡介
調試是軟件開辟周期中很首要的一項目組。它具有挑釁性,同時也很讓人困惑和懊惱。總的來說,對於稍大一點的法度,調試是不成避免的。比來幾年,調試對象的成長讓很多調試任務變的越來越簡單和省時。
這篇文章總結了可能節儉你多量時候的十個visual studio的調試技能和辦法。
1 懸停鼠標查看表達式值
調試是很有挑釁性的。比如在函數內慢慢運行可以看出哪里失足,查看客棧信息可以知道函數被誰調用等等。。。
然則無論哪種景象下,查看表達式和局部變量的值都是很麻煩的(把表達式和局部變量放到watch窗口里)。
一種更簡單的辦法,把鼠標停在所需查看的數據上。若是是類或布局,那么點擊展開可以很便利快速地查看其字段。
2 在運行過程中改變變量值
調試器不僅僅是解析法度潰散和詭異行動的對象,還可以經由過程慢慢調試搜檢數據和行動是否合適法度預期的辦法解決很多bug。有時,你會想是否設置某些前提為真,法度就能正確運行了。其實你只要把鼠標移動到變量上,雙擊值,然后輸入你須要的值。如許就不須要批改代碼,重啟法度了。
3 設置下一個運行地位
一個典范的調試案例是我們經常會用慢慢調試的辦法去解析為什么函數失足了。這時你碰到這個函數調用其他函數返回錯誤,而這個錯誤不是你想要的,你該怎么辦?重啟調試器?這里有個更好的辦法,直接把的運行地位箭頭拖到你想要的運行地位。其實就是跳過中心運行代碼,直接到想要的地位。很簡單吧。
4 編輯然后持續運行
在運行一個很錯雜的法度和插件時,發明一個錯誤,然則不想浪費時候去重編譯重啟動法度。
很簡單,只要在這個地位批改這個bug,然后持續調試。Visual studio會批改這個法度,使得你可以持續調試而不須要重啟法度。
值得重視的是“編輯然后持續運行”這個功能有幾個限制。一,它不克不及在64位代碼上應用。若是想應用這個功能,到項目設置里的編譯選項,選擇”x86”作為目標平台。不要愁悶,這目標平台在reslease設備是和”debug是分別的,也就是說依然是”Any CPU”的設置。二,“編輯然后持續運行”這個功能僅實用於一個函數內部改變。若是你想要改變這個函數的聲明或者增長新的辦法,你只能選擇重啟法度,或者不做任何改變持續。若是批改的辦法中包含lambda表達式,則意味着批改了編譯器主動生成的委托類型,如許會導致編譯器停止運行。
5 一個便利的查看窗口
大項目組現代的調試器都有查看窗口。然則,visual studio的查看窗口應用希罕簡單,你能很便利的增長和刪除變量。只要在窗口里點擊空白行,輸入表達式然后按enter鍵。或者點擊表達式,按鍵刪除不須要的表達式。
在調試窗口不僅僅可以查看通俗的變量值,甚至可以輸入¥handles去追蹤打開的句柄數量,¥err去查看函數的錯誤代碼(然后應用 Tools->Error 查看錯誤代碼的描述)或者輸入 @eax(在64位下是@rax )查看包含函數返回值的存放器值。
6 注釋反匯編
應用內部的反匯編功能使得優化局部代碼加倍簡單。Visual studio可以在你的每一行代碼下顯示匯編指令,並且可以慢慢調試匯編代碼,也可以在隨便率性地位設置斷點。查看和批改匯編代碼類似於c++。
7 客棧信息的線程窗口
調試多線程代碼是很疾苦的。或許也是有趣的。這取決於你的調試器。Visual studio 一個很贊的功能就是在線程窗口查看線程的客棧信息。你能很便利的直接看到所有線程以及他們的客棧信息。
8 前提斷點
若是你想重現一個小概率事務,然則斷點在多量不須要的前提下也會觸發。你可以很簡單的設置前提斷點。在斷點窗口設置該斷點前提,Visual studio 會主動忽視不合適前提的斷點。
9 內存窗口
一些bug是由錯誤的布局定義、缺乏對齊屬性等原因引起的。查看每行內存的內容很輕易定位和解決這些bug. Visual studio 的內存窗口可以把數據翻譯成8/16/32/64-bit數字或者浮點數。你可以在編輯窗口直接改變數值。
10 跳轉到定義
若是你在解決別人寫的代碼一個bug,會碰到“這個類型是什么”“這個函數做什么的”之類的題目,你可以應用visual studio的跳轉到定義的號令來查看類型或函數的定義。
11 號令窗口
這個小技能是由chaau建議的,它能節儉你多量的時候。Visual studio支撐一個號令窗口,你可以經由過程菜單View->Other Windows->Command Window 打開。你可以在窗口里輸入不合號令使調試主動化。比如,可以經由過程很簡單的號令去的測試MFC的COleDateTime變量。