除錯是軟體開發周期中很重要的一部分。它具有挑戰性,同時也很讓人疑惑和煩惱。總的來說,對於稍大一點的程式,除錯是不可避免的。最近幾年,除錯工具的發展讓很多除錯任務變的越來越簡單和省時。
這篇文章總結了可能節省你大量時間的11個visual studio的除錯技巧和方法。
11 懸停滑鼠檢視表示式值
除錯是很有挑戰性的。比如在函式內逐步執行可以看出**出錯,檢視堆疊資訊可以知道函式被誰呼叫等等……但是無論哪種情況下,檢視表示式和區域性變數的值都是很麻煩的(把表示式和區域性變數放到watch視窗裡)。一種更簡單的方法,把滑鼠停在所需檢視的資料上。如果是類或結構,那麼點選展開可以很方便快速地檢視其欄位。
22 在執行過程中改變變數值
偵錯程式不僅僅是分析程式崩潰和詭異行為的工具,還可以通過逐步除錯檢查資料和行為是否符合程式預期的方法解決許多bug。有時,你會想是否設定某些條件為真,程式就能正確執行了。其實你只要把滑鼠移動到變數上,雙擊值,然後輸入你需要的值。這樣就不需要修改**,重啟程式了。
33 設定下乙個執行位置
乙個典型的除錯案例是我們經常會用逐步除錯的方法去分析為什麼函式出錯了。這時你遇到這個函式呼叫其他函式返回錯誤,而這個錯誤不是你想要的,你該怎麼辦?重啟偵錯程式?這裡有個更好的方法,直接把黃色的執行位置箭頭拖到你想要的執行位置。其實就是跳過中間執行**,直接到想要的位置。很簡單吧。
44 編輯然後繼續執行
在執行乙個很複雜的程式和外掛程式時,發現乙個錯誤,但是不想浪費時間去重編譯重啟動程式。很簡單,只要在這個位置修改這個bug,然後繼續除錯。visual studio會修改這個程式,使得你可以繼續除錯而不需要重啟程式。
值得注意的是「編輯然後繼續執行」這個功能有幾個限制。一,它不能在64位**上使用。如果想使用這個功能,到專案設定裡的編譯選項,選擇」x86」作為目標平台。不要擔心,這目標平台在reslease配置是和」debug是分離的,也就是說依然是」any cpu」的設定。二,「編輯然後繼續執行」這個功能僅適用於乙個函式內部改變。如果你想要改變這個函式的宣告或者增加新的方法,你只能選擇重啟程式,或者不做任何改變繼續。如果修改的方法中包含lambda表示式,則意味著修改了編譯器自動生成的委託型別,這樣會導致編譯器停止執行。
55 乙個方便的檢視視窗
大部分現代的偵錯程式都有檢視視窗。但是,visual studio的檢視視窗使用特別簡單,你能很方便的增加和刪除變數。只要在視窗裡點選空白行,輸入表示式然後按enter鍵。或者點選表示式,按delete鍵刪除不需要的表示式。
在除錯視窗不僅僅可以檢視普通的變數值,甚至可以輸入$handles去追蹤開啟的控制代碼數量,$err去檢視函式的錯誤**(然後使用 tools->error 檢視錯誤**的描述)或者輸入 @eax(在64位下是@rax )檢視包含函式返回值的暫存器值。
66 注釋反彙編
使用內部的反彙編功能使得優化區域性**更加簡單。visual studio可以在你的每一行**下顯示彙編指令,並且可以逐步除錯彙編**,也可以在任意位置設定斷點。檢視和修改彙編**類似於c++。
77 堆疊資訊的執行緒視窗
88 條件斷點
如果你想重現乙個小概率事件,但是斷點在大量不需要的條件下也會觸發。你可以很簡單的設定條件斷點。在斷點視窗設定該斷點條件,visual studio 會自動忽略不符合條件的斷點。
99 記憶體視窗
一些bug是由錯誤的結構定義、缺少對齊屬性等原因引起的。檢視每行記憶體的內容很容易定位和解決這些bug. visual studio 的記憶體視窗可以把資料翻譯成8/16/32/64-bit數字或者浮點數。你可以在編輯視窗直接改變量值。
1010 跳轉到定義
如果你在解決別人寫的**乙個bug,會遇到「這個型別是什麼」「這個函式做什麼的」之類的問題,你可以使用visual studio的跳轉到定義的命令來檢視型別或函式的定義。
1111 命令視窗
這個小技巧是由chaau建議的,它能節省你大量的時間。visual studio支援乙個命令視窗,你可以通過選單view->other windows->command window 開啟。你可以在視窗裡輸入不同命令使除錯自動化。比如,可以通過很簡單的命令去的測試mfc的coledatetime變數。
Visual Studio中關於除錯的小技巧
1 debug.stepout shift f11 在除錯的時候,執行該斷點所在函式中剩餘的部分,然後跳出到上一層。2 在乙個for迴圈中,如果我們想指定的觀察迴圈變數i為某個特定的值的情況,比如說50,一般我們需要這樣,用if語句把這種情況寫出來,並且在i 50的地方設定乙個斷點,然後等待程式執行...
visual studio除錯技巧
講的是windows除錯技巧,學習了。自認為學的不錯了,還有這些技巧呢 巧用vc監視進行 除錯的三個技巧 author zhangguanshi 1 如果要檢視系統函式的最後錯誤,可以在監視中輸入 err,然後使用vc的工具error lookup,輸入監視中的右邊的數字,就能查出最後出的是什麼錯了...
Visual Studio 除錯技巧
第二次碰到這個問題了,真的是煩,記憶力是這麼差勁嗎?一定不能再犯第三次了。最近一直在用vs 除錯windows下公司某個服務下的一些dll。今天開了服務後,用vs鏈結process後,跟著 一步一步走的時候,發現有些函式無法跟進去,紅色的斷點號顯示的是白色的。導致相關的命令一直沒有發出去。艱難。後來...