分享5個實用的vs調試技巧
并行堆棧
作用簡介:
我們可以通過調用堆棧窗口查看當前線程的調用棧,局限是只能查看某個線程的調用棧,要想查看每個線程的調用棧得切來切去的,太麻煩。如果我們想同時查看多個線程的調用情況,我們可以使用并行堆棧窗口。顧名思義,并行堆棧窗口可以同時查看多個線程的調用棧。如果程序中的某個線程死循環(huán)了,我們想確定是哪個,這時候可以中斷到 vs 中,然后打開并行堆棧窗口進行查看,基本上可以很快定位到出問題的代碼。
打開方式:
調試的時候,通過 調試 -> 窗口 -> 并行堆棧 即可打開。在 vs2013 中對應的快捷鍵是 ctrl + shift + d, s 。
注意是按住 ctrl + shift,再按 d,松開 ctrl, shift 后再按 s。

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

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

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

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

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

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

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

注意:
1、 表達式不要加分號!??!
2、 高版本的 vs 才支持,vs2019 親測有效,其它版本沒測試。
注意事項:
1、 程序需要中斷到 vs 后,才能執(zhí)行查看調用棧,觀察變量等操作。
2、 不需要的時候,請關閉并行堆棧等窗口,因為刷新信息對調試速度有一定影響,如果覺得 vs 調試速度慢了,可以關閉不必要的窗口。
3、 vs2013 中默認的快捷鍵設計的比較蛋疼,使用的時候需要注意。
總結
當然,還有很多很多其它調試技巧(包括上一篇文章中提到的 natvis),快捷鍵等等,后續(xù)會慢慢分享給大家。歡迎大家在群里多交流。
參考資料
https://docs.microsoft.com/en-US/visualstudio/debugger/debugger-tips-and-tricks?view=vs-2019
以上就是分享5個實用的vs調試技巧的詳細內容,更多關于vs調試技巧的資料請關注腳本之家其它相關文章!
相關文章
uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問
這篇文章主要介紹了uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問題解決,需要的朋友可以參考下2022-12-12
DLL(Dynamic Linkable Library) 詳解說明
DLL文件(Dynamic Linkable Library 即動態(tài)鏈接庫文件),是一種不能單獨運行的文件,它允許程序共享執(zhí)行特殊任務所必需的代碼和其他資源2008-12-12
一文讀懂modbus slave和modbus poll使用說明
modbus poll和modbus slave是一款實用的modbus開發(fā)和調試工具,可以非常方便的進行modbus調試,是非常有用的Modbus主機/從機模擬程序,這篇文章給大家介紹modbus slave和modbus poll使用說明,感興趣的朋友一起看看吧2021-04-04

