再分享 5 个 vs 调试技巧
前言
之前在《5 個(gè)非常實(shí)用的 vs 調(diào)試技巧》和《繼續(xù)分享 5 個(gè)實(shí)用的 vs 調(diào)試技巧》中分享了 10 個(gè)我認(rèn)為非常值得了解的 vs 調(diào)試技巧,本周繼續(xù)分享 5 個(gè)很實(shí)用的調(diào)試技巧。
1. ?顯示下一條語(yǔ)句
在調(diào)試時(shí),遇到斷點(diǎn)中斷后,為了更加清楚的了解程序邏輯,經(jīng)常需要翻看調(diào)用棧,查看相關(guān)代碼。看完后,想快速返回到中斷的地方,之前基本上是通過(guò)以下兩種方法返回。
ctrl + alt + c 調(diào)出調(diào)用棧,然后雙擊最上方的棧幀來(lái)返回。
按一下 F11 讓程序運(yùn)行一小步(有時(shí)候就進(jìn)到函數(shù)里了,很不好)。
這兩種方法都比較麻煩。其實(shí), vs 中有一個(gè)非常實(shí)用的功能,可以快速的回到中斷處。這個(gè)功能就是 顯示下一條語(yǔ)句。
中斷后, 右鍵,顯示下一條語(yǔ)句 即可顯示下一條語(yǔ)句。在 vs2013 中對(duì)應(yīng)的快捷鍵是 alt + * 。
小貼士:alt + * 是小鍵盤上的 *。
2. 設(shè)置 symbol
不知道各位在調(diào)試的時(shí)候,有沒(méi)有遇到過(guò) vs 特別慢的情況,跟卡死了一樣。很有可能是在加載符號(hào)。有兩個(gè)方法可以加速:
斷網(wǎng)。斷網(wǎng)后可以使加載符號(hào)的操作失敗的更快。但是會(huì)導(dǎo)致有些模塊的符號(hào)加載不上。
設(shè)置符號(hào)加載策略。可以只為特定模塊加載符號(hào)。通過(guò) 調(diào)試 -> 選項(xiàng)和設(shè)置 ,然后選擇 調(diào)試 -> 符號(hào) 即可設(shè)置。
說(shuō)明:
如果愿意,可以隨時(shí)手動(dòng)為特定模塊單獨(dú)加載符號(hào)。
可以通過(guò) 調(diào)試 -> 窗口(W) -> 模塊(O) 或者快捷鍵 Ctl + Alt + U 打開模塊列表界面。
然后在選中的模塊上 右鍵 -> 加載符號(hào) 即可。
3. ?調(diào)試子進(jìn)程
windbg 有一個(gè)非常給力的功能就是調(diào)試子進(jìn)程。當(dāng)需要調(diào)試子進(jìn)程的時(shí)候,不用手動(dòng)附加到子進(jìn)程了,而且不必?fù)?dān)心錯(cuò)過(guò)子進(jìn)程中的初始化代碼了。據(jù)我所知,vs 本身并不支持這項(xiàng)功能,需要使用官方提供的插件 —— Microsoft Child Process Debugging Power Tool[1]。該插件支持 vs2013~2019。
具體使用介紹 請(qǐng)參考 Introducing the Child Process Debugging Power Tool[2]
4. 偽變量
了解一些 vs 中的一些偽變量非常有必要。比如,當(dāng)前進(jìn)程的環(huán)境變量,命令行等信息。
| $err | 獲取 LastError 的值,等同于 GetLastError()。 |
| $err,hr | 帶文字解釋的 LastError。 |
| $env | 進(jìn)程環(huán)境變量 |
| $cmdline | 命令行。 |
| $pid | 進(jìn)程 ID |
| $tid | 當(dāng)前線程 ID ,經(jīng)測(cè)試,vs2013 不支持。 |
更多的偽變量請(qǐng)參考 Pseudovariables in the Visual Studio debugger[3]
5. 修飾符
不知道你是否曾經(jīng)想在 vs 中查看 utf8 類型的字符串呢?是不是不太方便?其實(shí),在 vs 中有一些觀察變量的修飾符,可以方便的按照一定的規(guī)則查看變量。簡(jiǎn)單羅列幾個(gè)常用的修飾符,如下表:
| s8 | 按 UTF-8 顯示字符串 |
| su | 按 UTF-16 顯示字符串 |
| h (x) | 按 16 進(jìn)制顯示數(shù)值 |
| d | 按 10 進(jìn)制顯示數(shù)值 |
| c | 按字符顯示數(shù)值 |
| [size] | 把指針當(dāng)成 size 大小的數(shù)組顯示 |
| expand(n) | 顯示第 n+1 個(gè)(索引從 0 開始)元素 |
更多的修飾符請(qǐng)參考 Format specifiers for C++ in the Visual Studio debugger[4]
結(jié)語(yǔ)
熟練掌握一些調(diào)試技巧,對(duì)提高調(diào)試效率有很大幫助。不知道今天介紹的這 5 個(gè)調(diào)試技巧,有沒(méi)有你喜歡的呢?
References:
[1]
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
感謝你的分享,點(diǎn)贊和在看
總結(jié)
以上是生活随笔為你收集整理的再分享 5 个 vs 调试技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 跟我一起学.NetCore之熟悉的接口权
- 下一篇: 网络知识 | 《图解HTTP》读书笔记(