分享5個實用的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
以上就是分享5個實用的vs除錯技巧的詳細內容,更多關於vs除錯技巧的資料請關注我們其它相關文章!