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

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

打開(kāi)方式:
調(diào)試的時(shí)候,通過(guò) 調(diào)試 -> 窗口 -> 并行監(jiān)視 -> 并行監(jiān)視1/2/3/4 即可打開(kāi)對(duì)應(yīng)的并行監(jiān)視窗口。和監(jiān)視窗口一樣可以同時(shí)打開(kāi)四個(gè)。
在 vs2013 中對(duì)應(yīng)的快捷鍵是 ctrl + shift + d, 1/2/3/4 。注意是按住 ctrl + shift,再按 d,松開(kāi) ctrl, shift 后再按 1/2/3/4。

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

打開(kāi)方式:
調(diào)試的時(shí)候,通過(guò) 調(diào)試 -> 窗口 -> 自動(dòng)窗口 即可打開(kāi)。在 vs2013 中對(duì)應(yīng)的快捷鍵是 ctrl + alt + v, s 。注意是按住 ctrl + alt,再按 v,松開(kāi) ctrl, alt 后再按 s。

混合調(diào)試
作用簡(jiǎn)介:
當(dāng)我們需要調(diào)試的程序中有 .NET 代碼,也有 c++ 代碼時(shí),開(kāi)啟混合調(diào)試非常有必要。
打開(kāi)方式:
通過(guò) F5 調(diào)試時(shí)的設(shè)置方法。

通過(guò)附加進(jìn)程進(jìn)行調(diào)試時(shí)的設(shè)置方法。

務(wù)必注意: 有時(shí)候我們?cè)O(shè)置斷點(diǎn)不生效,可以檢查一下調(diào)試方式是否選對(duì)了。如果我們只想調(diào)試 C++ 代碼,可以只勾選 Native,如果只想調(diào) .NET 代碼,可以根據(jù)實(shí)際情況勾選 Managed(v4.5, v4.0) 或者 Managed(v3.5, v3.0, v2.0),如果都想調(diào)那就都勾選。
使用斷點(diǎn)修改變量的值
作用簡(jiǎn)介:
相信大家在調(diào)試的時(shí)候都設(shè)置過(guò)斷點(diǎn),但是你是否知道我們可以在調(diào)試的時(shí)候通過(guò)斷點(diǎn)來(lái)改變變量的值?
調(diào)查問(wèn)題時(shí),想手動(dòng)修改值來(lái)驗(yàn)證一下我們的想法是否正確,但是又不想修改代碼,也不想中斷下來(lái)后,手動(dòng)修改,因?yàn)榭赡苄枰謩?dòng)修改 N 次,改過(guò)的小伙伴兒應(yīng)該有體會(huì)。我們可以通過(guò)這個(gè)小技巧來(lái)自動(dòng)幫我們改變變量的值。

注意:
1、 表達(dá)式不要加分號(hào)?。?!
2、 高版本的 vs 才支持,vs2019 親測(cè)有效,其它版本沒(méi)測(cè)試。
注意事項(xiàng):
1、 程序需要中斷到 vs 后,才能執(zhí)行查看調(diào)用棧,觀察變量等操作。
2、 不需要的時(shí)候,請(qǐng)關(guān)閉并行堆棧等窗口,因?yàn)樗⑿滦畔?duì)調(diào)試速度有一定影響,如果覺(jué)得 vs 調(diào)試速度慢了,可以關(guān)閉不必要的窗口。
3、 vs2013 中默認(rèn)的快捷鍵設(shè)計(jì)的比較蛋疼,使用的時(shí)候需要注意。
總結(jié)
當(dāng)然,還有很多很多其它調(diào)試技巧(包括上一篇文章中提到的 natvis),快捷鍵等等,后續(xù)會(huì)慢慢分享給大家。歡迎大家在群里多交流。
參考資料
https://docs.microsoft.com/en-US/visualstudio/debugger/debugger-tips-and-tricks?view=vs-2019
以上就是分享5個(gè)實(shí)用的vs調(diào)試技巧的詳細(xì)內(nèi)容,更多關(guān)于vs調(diào)試技巧的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Matlab使用fft畫(huà)出信號(hào)頻譜圖的方法
這篇文章主要介紹了Matlab使用fft畫(huà)出信號(hào)頻譜圖的方法,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
app開(kāi)發(fā)之原生開(kāi)發(fā)、H5開(kāi)發(fā)和混合開(kāi)發(fā)的區(qū)別
這篇文章主要介紹了app開(kāi)發(fā)之原生開(kāi)發(fā)、H5開(kāi)發(fā)和混合開(kāi)發(fā)的區(qū)別,需要的朋友可以參考下2019-12-12
Unity3D中shader 輪廓描邊效果實(shí)現(xiàn)代碼
這篇文章主要介紹了Unity3D中shader 輪廓描邊效果的相關(guān)資料,需要的朋友可以參考下2017-03-03
HTTP中ETag語(yǔ)法及使用實(shí)戰(zhàn)詳解
這篇文章主要為大家介紹了HTTP中ETag語(yǔ)法及使用實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Eclipse 誤刪文件的恢復(fù)與代碼的恢復(fù)詳解
這篇文章主要介紹了Eclipse 誤刪文件的恢復(fù),代碼的恢復(fù)的相關(guān)資料,需要的朋友可以參考下2016-09-09

