<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          再分享 5 個 vs 調(diào)試技巧

          共 2232字,需瀏覽 5分鐘

           ·

          2020-10-14 14:10

          前言

          之前在《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)代碼??赐旰?,想快速返回到中斷的地方,之前基本上是通過以下兩種方法返回。

          1. ctrl + alt + c 調(diào)出調(diào)用棧,然后雙擊最上方的棧幀來返回。
          2. 按一下 F11 讓程序運行一小步(有時候就進到函數(shù)里了,很不好)。

          這兩種方法都比較麻煩。其實, vs 中有一個非常實用的功能,可以快速的回到中斷處。這個功能就是 顯示下一條語句。

          中斷后, 右鍵,顯示下一條語句 即可顯示下一條語句。在 vs2013 中對應的快捷鍵是 alt + * 。

          小貼士:alt + * 是小鍵盤上的 *。

          2. 設置 symbol

          不知道各位在調(diào)試的時候,有沒有遇到過 vs 特別慢的情況,跟卡死了一樣。很有可能是在加載符號。有兩個方法可以加速:

          1. 斷網(wǎng)。斷網(wǎng)后可以使加載符號的操作失敗的更快。但是會導致有些模塊的符號加載不上。
          2. 設置符號加載策略。可以只為特定模塊加載符號。通過 調(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)境變量,命令行等信息。

          PseudovariablesFunction
          $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ī)則查看變量。簡單羅列幾個常用的修飾符,如下表:

          SpecifierFunction
          s8UTF-8 顯示字符串
          suUTF-16 顯示字符串
          h (x)16 進制顯示數(shù)值
          d10 進制顯示數(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:

          [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



          感謝你的分享,點贊和在看

          瀏覽 37
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久亚洲AV无码 | 国产日本视频完整版无删减在线观看 | 欧美亚洲中文 | 日韩一级片 | 天堂色偷偷 |