再分享 5 個 vs 調(diào)試技巧
前言
之前在《5 個非常實用的 vs 調(diào)試技巧》和《繼續(xù)分享 5 個實用的 vs 調(diào)試技巧》中分享了 10 個我認為非常值得了解的 vs 調(diào)試技巧,本周繼續(xù)分享 5 個很實用的調(diào)試技巧。
1. ?顯示下一條語句
在調(diào)試時,遇到斷點中斷后,為了更加清楚的了解程序邏輯,經(jīng)常需要翻看調(diào)用棧,查看相關(guān)代碼??赐旰?,想快速返回到中斷的地方,之前基本上是通過以下兩種方法返回。
ctrl + alt + c調(diào)出調(diào)用棧,然后雙擊最上方的棧幀來返回。按一下 F11讓程序運行一小步(有時候就進到函數(shù)里了,很不好)。
這兩種方法都比較麻煩。其實, vs 中有一個非常實用的功能,可以快速的回到中斷處。這個功能就是 顯示下一條語句。
中斷后, 右鍵,顯示下一條語句 即可顯示下一條語句。在 vs2013 中對應的快捷鍵是 alt + * 。

小貼士:
alt + *是小鍵盤上的*。
2. 設置 symbol
不知道各位在調(diào)試的時候,有沒有遇到過 vs 特別慢的情況,跟卡死了一樣。很有可能是在加載符號。有兩個方法可以加速:
斷網(wǎng)。斷網(wǎng)后可以使加載符號的操作失敗的更快。但是會導致有些模塊的符號加載不上。 設置符號加載策略。可以只為特定模塊加載符號。通過 調(diào)試 -> 選項和設置,然后選擇調(diào)試 -> 符號即可設置。

說明:
如果愿意,可以隨時手動為特定模塊單獨加載符號。
可以通過 調(diào)試 -> 窗口(W) -> 模塊(O) 或者快捷鍵 Ctl + Alt + U 打開模塊列表界面。

然后在選中的模塊上 右鍵 -> 加載符號 即可。

3. ?調(diào)試子進程
windbg 有一個非常給力的功能就是調(diào)試子進程。當需要調(diào)試子進程的時候,不用手動附加到子進程了,而且不必擔心錯過子進程中的初始化代碼了。據(jù)我所知,vs 本身并不支持這項功能,需要使用官方提供的插件 —— Microsoft Child Process Debugging Power Tool[1]。該插件支持 vs2013~2019。
具體使用介紹 請參考 Introducing the Child Process Debugging Power Tool[2]
4. 偽變量
了解一些 vs 中的一些偽變量非常有必要。比如,當前進程的環(huán)境變量,命令行等信息。
| Pseudovariables | Function |
|---|---|
$err | 獲取 LastError 的值,等同于 GetLastError()。 |
$err,hr | 帶文字解釋的 LastError。 |
$env | 進程環(huán)境變量 |
$cmdline | 命令行。 |
$pid | 進程 ID |
$tid | 當前線程 ID ,經(jīng)測試,vs2013 不支持。 |
更多的偽變量請參考 Pseudovariables in the Visual Studio debugger[3]
5. 修飾符
不知道你是否曾經(jīng)想在 vs 中查看 utf8 類型的字符串呢?是不是不太方便?其實,在 vs 中有一些觀察變量的修飾符,可以方便的按照一定的規(guī)則查看變量。簡單羅列幾個常用的修飾符,如下表:
| Specifier | Function |
|---|---|
s8 | 按 UTF-8 顯示字符串 |
su | 按 UTF-16 顯示字符串 |
h (x) | 按 16 進制顯示數(shù)值 |
d | 按 10 進制顯示數(shù)值 |
c | 按字符顯示數(shù)值 |
[size] | 把指針當成 size 大小的數(shù)組顯示 |
expand(n) | 顯示第 n+1 個(索引從 0 開始)元素 |
更多的修飾符請參考 Format specifiers for C++ in the Visual Studio debugger[4]
結(jié)語
熟練掌握一些調(diào)試技巧,對提高調(diào)試效率有很大幫助。不知道今天介紹的這 5 個調(diào)試技巧,有沒有你喜歡的呢?
References:
Microsoft Child Process Debugging Power Tool: https://marketplace.visualstudio.com/items?itemName=vsdbgplat.MicrosoftChildProcessDebuggingPowerTool
[2]Introducing the Child Process Debugging Power Tool: https://devblogs.microsoft.com/devops/introducing-the-child-process-debugging-power-tool/
[3]Pseudovariables in the Visual Studio debugger: https://docs.microsoft.com/zh-cn/visualstudio/debugger/pseudovariables?view=vs-2019
[4]Format specifiers for C++ in the Visual Studio debugger: https://docs.microsoft.com/zh-cn/visualstudio/debugger/format-specifiers-in-cpp?view=vs-2019
感謝你的分享,點贊和在看
