1. 程式人生 > 程式設計 >分享5個實用的vs除錯技巧

分享5個實用的vs除錯技巧

並行堆疊

作用簡介:

我們可以通過呼叫堆疊視窗檢視當前執行緒的呼叫棧,侷限是隻能檢視某個執行緒的呼叫棧,要想檢視每個執行緒的呼叫棧得切來切去的,太麻煩。如果我們想同時檢視多個執行緒的呼叫情況,我們可以使用並行堆疊視窗。顧名思義,並行堆疊視窗可以同時檢視多個執行緒的呼叫棧。如果程式中的某個執行緒死迴圈了,我們想確定是哪個,這時候可以中斷到 vs 中,然後開啟並行堆疊視窗進行檢視,基本上可以很快定位到出問題的程式碼。

開啟方式:

除錯的時候,通過 除錯 -> 視窗 -> 並行堆疊 即可開啟。在 vs2013 中對應的快捷鍵是 ctrl + shift + d,s 。

注意是按住 ctrl + shift,再按 d,鬆開 ctrl,shift 後再按 s。

分享5個實用的vs除錯技巧

說明:

我個人不太喜歡 vs 預設的中文翻譯,我認為呼叫堆疊,並行堆疊翻譯的並不準確,Call Stack 直譯為呼叫棧就很好,因為函式呼叫跟堆一點關係都沒有,而且 stack 直譯過來也是棧,heap 才是堆,不知道為什麼會把呼叫棧翻譯成堆疊。希望有知道的小夥伴兒留言指點。

並行監視

作用簡介:

相信,大家經常使用監視視窗檢視變數,當我們想檢視每個棧幀的區域性變數的時候,我們需要切換到對應棧幀才能看到對應的值,是不是比較麻煩?並行監視視窗瞭解下?

分享5個實用的vs除錯技巧

開啟方式:

除錯的時候,通過 除錯 -> 視窗 -> 並行監視 -> 並行監視1/2/3/4 即可開啟對應的並行監視視窗。和監視視窗一樣可以同時開啟四個。

在 vs2013 中對應的快捷鍵是 ctrl + shift + d,1/2/3/4 。注意是按住 ctrl + shift,再按 d,鬆開 ctrl,shift 後再按 1/2/3/4。

分享5個實用的vs除錯技巧

自動視窗

作用簡介:

除了可以檢視函式引數,區域性變數的值意外,更有用的功能是檢視函式呼叫的返回值。

分享5個實用的vs除錯技巧

開啟方式:

除錯的時候,通過 除錯 -> 視窗 -> 自動視窗 即可開啟。在 vs2013 中對應的快捷鍵是 ctrl + alt + v,s 。注意是按住 ctrl + alt,再按 v,鬆開 ctrl,alt 後再按 s。

分享5個實用的vs除錯技巧

混合除錯

作用簡介:

當我們需要除錯的程式中有 .NET 程式碼,也有 c++ 程式碼時,開啟混合除錯非常有必要。

開啟方式:

通過 F5 除錯時的設定方法。

分享5個實用的vs除錯技巧

通過附加程序進行除錯時的設定方法。

分享5個實用的vs除錯技巧

務必注意: 有時候我們設定斷點不生效,可以檢查一下除錯方式是否選對了。如果我們只想除錯 C++ 程式碼,可以只勾選 Native,如果只想調 .NET 程式碼,可以根據實際情況勾選 Managed(v4.5,v4.0) 或者 Managed(v3.5,v3.0,v2.0),如果都想調那就都勾選。

使用斷點修改變數的值

作用簡介:

相信大家在除錯的時候都設定過斷點,但是你是否知道我們可以在除錯的時候通過斷點來改變變數的值?

調查問題時,想手動修改值來驗證一下我們的想法是否正確,但是又不想修改程式碼,也不想中斷下來後,手動修改,因為可能需要手動修改 N 次,改過的小夥伴兒應該有體會。我們可以通過這個小技巧來自動幫我們改變變數的值。

分享5個實用的vs除錯技巧

注意:

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除錯技巧的資料請關注我們其它相關文章!