標籤:blog http 使用 io 資料 ar 問題 代碼
簡介
調試是軟體開發週期中很重要的一部分。它具有挑戰性,同時也很讓人疑惑和煩惱。總的來說,對於稍大一點的程式,調試是不可避免的。最近幾年,調試工具的發展讓很多調試任務變的越來越簡單和省時。
這篇文章總結了可能節省你大量時間的十個visual studio的調試技巧和方法。
1 懸停滑鼠查看錶達式值
調試是很有挑戰性的。比如在函數內逐步運行可以看出哪裡出錯,查看堆棧資訊可以知道函數被誰調用等等。。。
但是無論哪種情況下,查看錶達式和局部變數的值都是很麻煩的(把運算式和局部變數放到watch視窗裡)。
一種更簡單的方法,把滑鼠停在所需查看的資料上。如果是類或結構,那麼點擊展開可以很方便快速地查看其欄位。
2 在運行過程中改變變數值
調試器不僅僅是剖析器崩潰和詭異行為的工具,還可以通過逐步調試檢查資料和行為是否符合程式預期的方法解決許多bug。有時,你會想是否設定某些條件為真,程式就能正確運行了。其實你只要把滑鼠移動到變數上,雙擊值,然後輸入你需要的值。這樣就不需要修改代碼,重啟程式了。
3 設定下一個運行位置
一個典型的調試案例是我們經常會用逐步調試的方法去分析為什麼函數出錯了。這時你遇到這個函數調用其他函數返回錯誤,而這個錯誤不是你想要的,你該怎麼辦?重啟調試器?這裡有個更好的方法,直接把黃色的運行位置箭頭拖到你想要的運行位置。其實就是跳過中間運行代碼,直接到想要的位置。很簡單吧。
4 編輯然後繼續運行
在運行一個很複雜的程式和外掛程式時,發現一個錯誤,但是不想浪費時間去重編譯重啟動程式。
很簡單,只要在這個位置修改這個bug,然後繼續調試。Visual studio會修改這個程式,使得你可以繼續調試而不需要重啟程式。
值得注意的是“編輯然後繼續運行”這個功能有幾個限制。一,它不能在64位代碼上使用。如果想使用這個功能,到項目設定裡的編譯選項,選擇”x86”作為目標平台。不要擔心,這目標平台在reslease配置是和”debug是分離的,也就是說依然是”Any CPU”的設定。二,“編輯然後繼續運行”這個功能僅適用於一個函數內部改變。如果你想要改變這個函數的聲明或者增加新的方法,你只能選擇重啟程式,或者不做任何改變繼續。如果修改的方法中包含lambda運算式,則意味著修改了編譯器自動產生的委託類型,這樣會導致編譯器停止運行。
5 一個方便的查看視窗
大部分現代的調試器都有查看視窗。但是,visual studio的查看視窗使用特別簡單,你能很方便的增加和刪除變數。只要在視窗裡點擊空白行,輸入運算式然後按enter鍵。或者點擊運算式,按delete鍵刪除不需要的運算式。
在調試視窗不僅僅可以查看普通的變數值,甚至可以輸入$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變數。
本文連結:http://www.cnblogs.com/oooweb/p/11-visual-studio-debugging-skills.html
from admin10000