5 個非常實用的 vs 調試技巧
前言
調試是一項非常重要的技能,熟練掌握調試技巧有助於我們快速解決問題。vs
是我們平時編寫代碼時的首選工具,相信也是大多數小伙伴兒的首選調試工具,因為實際操作起來太方便了,代碼編寫完,一個 F5
就可以愉快的調試了。今天我想向大家推薦幾個非常值得了解 vs
調試技巧。話不多說,我們開始吧。
並行堆棧
作用簡介:
我們可以通過調用堆棧窗口查看當前線程的調用棧,局限是只能查看某個線程的調用棧,要想查看每個線程的調用棧得切來切去的,太麻煩。如果我們想同時查看多個線程的調用情況,我們可以使用並行堆棧窗口。顧名思義,並行堆棧窗口可以同時查看多個線程的調用棧。如果程序中的某個線程死循環了,我們想確定是哪個,這時候可以中斷到 vs
中,然后打開並行堆棧窗口進行查看,基本上可以很快定位到出問題的代碼。
打開方式:
調試的時候,通過 調試 -> 窗口 -> 並行堆棧
即可打開。在 vs2013
中對應的快捷鍵是 ctrl + shift + d, s
。
注意是按住 ctrl + shift
,再按 d
,松開 ctrl, shift
后再按 s
。

說明:
我個人不太喜歡 vs
默認的中文翻譯,我認為調用堆棧,並行堆棧翻譯的並不准確,Call Stack
直譯為調用棧就很好,因為函數調用跟堆一點關系都沒有,而且 stack
直譯過來也是棧,heap
才是堆,不知道為什么會把調用棧翻譯成堆棧。希望有知道的小伙伴兒留言指點。
並行監視
作用簡介:
相信,大家經常使用監視窗口查看變量,當我們想查看每個棧幀的局部變量的時候,我們需要切換到對應棧幀才能看到對應的值,是不是比較麻煩?並行監視窗口了解下?

打開方式:
調試的時候,通過 調試 -> 窗口 -> 並行監視 -> 並行監視1/2/3/4
即可打開對應的並行監視窗口。和監視窗口一樣可以同時打開四個。
在 vs2013
中對應的快捷鍵是 ctrl + shift + d, 1/2/3/4
。注意是按住 ctrl + shift
,再按 d
,松開 ctrl, shift
后再按 1/2/3/4
。

自動窗口
作用簡介:
除了可以查看函數參數,局部變量的值意外,更有用的功能是查看函數調用的返回值。

打開方式:
調試的時候,通過 調試 -> 窗口 -> 自動窗口
即可打開。在 vs2013
中對應的快捷鍵是 ctrl + alt + v, s
。注意是按住 ctrl + alt
,再按 v
,松開 ctrl, alt
后再按 s
。

混合調試
作用簡介:
當我們需要調試的程序中有 .NET
代碼,也有 c++
代碼時,開啟混合調試非常有必要。
打開方式:
通過 F5
調試時的設置方法。

通過附加進程進行調試時的設置方法。

務必注意: 有時候我們設置斷點不生效,可以檢查一下調試方式是否選對了。如果我們只想調試 C++
代碼,可以只勾選 Native
,如果只想調 .NET
代碼,可以根據實際情況勾選 Managed(v4.5, v4.0)
或者 Managed(v3.5, v3.0, v2.0)
,如果都想調那就都勾選。
使用斷點修改變量的值
作用簡介:
相信大家在調試的時候都設置過斷點,但是你是否知道我們可以在調試的時候通過斷點來改變變量的值?
調查問題時,想手動修改值來驗證一下我們的想法是否正確,但是又不想修改代碼,也不想中斷下來后,手動修改,因為可能需要手動修改 N
次,改過的小伙伴兒應該有體會。我們可以通過這個小技巧來自動幫我們改變變量的值。

注意:
1、 表達式不要加分號!!!
2、 高版本的 vs
才支持,vs2019
親測有效,其它版本沒測試。
注意事項:
1、 程序需要中斷到 vs
后,才能執行查看調用棧,觀察變量等操作。
2、 不需要的時候,請關閉並行堆棧等窗口,因為刷新信息對調試速度有一定影響,如果覺得 vs
調試速度慢了,可以關閉不必要的窗口。
3、 vs2013
中默認的快捷鍵設計的比較蛋疼,使用的時候需要注意。
總結
當然,還有很多很多其它調試技巧(包括上一篇文章中提到的 natvis
),快捷鍵等等,后續會慢慢分享給大家。歡迎大家在群里多交流。
參考資料
https://docs.microsoft.com/en-US/visualstudio/debugger/debugger-tips-and-tricks?view=vs-2019