乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      windbg調(diào)試命令

       天空上的極限 2016-11-10

       #調(diào)試命令窗口

       +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

      #使用gflags.exe工具(在windbg所在目錄下),讓某個(gè)進(jìn)程啟動(dòng)時(shí),拉取windbg進(jìn)行調(diào)試

      如下截圖:當(dāng)名稱(chēng)為captcomm.exe的進(jìn)程啟動(dòng)時(shí),拉起windbg調(diào)試

      也可通過(guò)腳本命令來(lái)實(shí)現(xiàn):

      復(fù)制代碼
      // 運(yùn)行captcomm.exe時(shí),啟動(dòng)windbg調(diào)試
      reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\captcomm.exe" /v Debugger /t REG_SZ /d "C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" /f
      // 解除啟動(dòng)時(shí)windbg調(diào)試
      reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\captcomm.exe" /f
      
      // 64位系統(tǒng)上,也可以設(shè)置以下注冊(cè)表節(jié)點(diǎn)
      reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\captcomm.exe" /v Debugger /t REG_SZ /d "C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" /f
      // 解除啟動(dòng)時(shí)windbg調(diào)試
      reg delete "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\captcomm.exe" /f
      
      // 測(cè)試發(fā)現(xiàn):HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options和HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options指向的是同一數(shù)據(jù),修改其中任何一個(gè)都可以
      復(fù)制代碼

       

      #重要說(shuō)明

      (1) windbg命令分為標(biāo)準(zhǔn)命令,元命令擴(kuò)展命令。

           標(biāo)準(zhǔn)命令提供最基本的調(diào)試功能,不區(qū)分大小寫(xiě)。如:bp  g  dt  dv  k等

           元命令提供標(biāo)準(zhǔn)命令沒(méi)有提供的功能,也內(nèi)建在調(diào)試引擎中,以.開(kāi)頭。如.sympath  .reload等

           擴(kuò)展命令用于擴(kuò)展某一方面的調(diào)試功能,實(shí)現(xiàn)在動(dòng)態(tài)加載的擴(kuò)展模塊中,以!開(kāi)頭。如!analyze等

      (2) 進(jìn)入調(diào)試狀態(tài)時(shí),直接回車(chē)可重復(fù)執(zhí)行上一條命令;按上下方向鍵可以瀏覽和選擇以前輸入過(guò)的命令

      (3) 神奇的Tab鍵,進(jìn)行命令補(bǔ)全;ESC清除當(dāng)前命令輸入框中的文本

      (4) 選擇Command窗口中的內(nèi)容,然后右擊進(jìn)行復(fù)制

      (5) 使用;作為分隔符,可以在同一行輸入多條命令

      (6) 上圖紅色框中的“0:000”。0為當(dāng)前調(diào)試會(huì)話(huà)的進(jìn)程號(hào)000為調(diào)試會(huì)話(huà)的線(xiàn)程號(hào)

      (7) 當(dāng)命令提示符顯示*BUSY*時(shí),即使命令輸入框可以輸入命令,但輸入的命令不會(huì)立即被執(zhí)行,要等windbg空閑時(shí)才能執(zhí)行。

           可使用Ctrl + Break來(lái)終止一個(gè)長(zhǎng)時(shí)間未完成的命令

      (8) 一次可以執(zhí)行多條命令,命令間用分號(hào);分隔 【:bp main;bp `view.cpp:120`】,一次打2個(gè)斷點(diǎn)

      (9) 為了保證windbg流暢運(yùn)行,在調(diào)試時(shí),盡量不要開(kāi)啟Watch、Locals、Registers、Call Stack、Processes and Threads窗口,直接用command來(lái)獲取信息

      #啟動(dòng)調(diào)試

      windbg -I  // 將windbg設(shè)置成默認(rèn)調(diào)試器

      windbg "notepad.exe" arguments  // 使用windbg啟動(dòng)調(diào)試notepad.exe

      windbg -p 4200  // 將windbg附加到一個(gè)正在運(yùn)行的pid為4200的進(jìn)程上

      windbg -pn "notepad.exe"  // 將windbg附加到一個(gè)正在運(yùn)行的名為notepad.exe的進(jìn)程上

      windbg –z "c:\mydumpfile.dmp" // 調(diào)試mydumpfile.dmp文件

      .opendump "c:\mydumpfile.dmp"  // 調(diào)試mydumpfile.dmp文件

      .attach 0n4220  // 4220為十進(jìn)制pid,使用該命令附加調(diào)試時(shí),必須先存在一個(gè)調(diào)試會(huì)話(huà)

      .detach   // 分離調(diào)試

      .restart  // 重啟并調(diào)試

      .kill  // 強(qiáng)制結(jié)束當(dāng)前調(diào)試

      q  // 結(jié)束當(dāng)前調(diào)試會(huì)話(huà),回到基礎(chǔ)工作空間,并結(jié)束調(diào)試進(jìn)程

      qd  // 結(jié)束當(dāng)前調(diào)試會(huì)話(huà),回到基礎(chǔ)工作空間,但不結(jié)束調(diào)試進(jìn)程

      #獲取幫助

        // 打印出所有標(biāo)準(zhǔn)命令

      .help  // 打印出所有元命令

      .hh  // 打開(kāi)windbg的chm幫助文件

      .hh bp  // 打開(kāi)windbg的chm幫助文件bp命令介紹頁(yè)

      command /?  // 打印命令command具體參數(shù)用法

      #注釋符

      *  // 注釋整行

      $$ // 注釋?zhuān)ㄓ龅椒痔?hào)結(jié)束)

      #配置調(diào)試環(huán)境

      :如果被調(diào)試的模塊(無(wú)論移動(dòng)到本機(jī)的何處)是用本機(jī)代碼編譯產(chǎn)生的,都不需要進(jìn)行符號(hào)和源代碼的路徑設(shè)置

      .sympath   // 查看當(dāng)前符號(hào)查找路徑

      .sympath c:\symbols   // 將符號(hào)查找路徑設(shè)為:c:\symbols

      .sympath+ c:\symbols  // 將c:\symbols添加到符號(hào)查找路徑集合中

      .symfix // 將符號(hào)查找路徑設(shè)為:SRV*WinDbg安裝目錄\Sym*http://msdl.microsoft.com/download/symbols

      .symfix f:\symbols // 將符號(hào)查找路徑設(shè)為:SRV*f:\symbols*http://msdl.microsoft.com/download/symbols

      .symfix+ f:\symbols  // 將SRV*f:\symbols*http://msdl.microsoft.com/download/symbols添加到符號(hào)查找路徑集合中

      .srcpath // 查看當(dāng)前源文件查找路徑

      .srcpath f:\src // 將源文件查找路徑設(shè)為:f:\src   注:必須勾選上菜單“Debug”-“Source Mode”;另外pdb須與exe、dll等執(zhí)行模塊匹配上

      .srcpath+ f:\src  // 將f:\src添加到源文件查找路徑集合中

      .exepath // 查看可執(zhí)行文件查找路徑

      .exepath f:\bin // 將可執(zhí)行文件查找路徑設(shè)為:f:\bin

      .exepath+ f:\bin  // 將f:\bin添加到可執(zhí)行文件查找路徑集合中

      #系統(tǒng)信息

      vertarget // os信息

      !cpuid  // cpu信息

      #wow64模式  【x64版windbg調(diào)試win32程序】

      .load wow64exts  // [!load wow64exts] 加載wow64exts.dll模塊  注:!sw就是wow64exts中的命令

      .unload wow64exts  // [!unload wow64exts] 卸載wow64exts.dll模塊

      .effmach  // 查看當(dāng)前調(diào)試mode:x86、x64等

      .effmach x86 // 切換到x86棧環(huán)境  注:需要先執(zhí)行.load wow64exts來(lái)加載wow64exts.dll模塊

      .effmach . // 切換回x64

      !sw  // [!wow64exts.sw]  在多個(gè)mode:x86、x64上進(jìn)行循環(huán)切換  注:如果win32程序在x64的mode下,會(huì)看到地址是64位的

      !k  // [!wow64exts.k]  打印32位、64位堆棧

      !k 5 // [!wow64exts.k 5]  打印32位、64位堆棧,棧幀個(gè)數(shù)為5

      !info // [!wow64exts.info]  輸出wow64相關(guān)的PEB、TEB和TLS基本信息

      !r // [!wow64exts.r]  輸出處理器當(dāng)前上下文信息

      !r dumpTest!main  // [!wow64exts.r dumpTest!main]  輸出main函數(shù)地址的上下文信息

      #符號(hào)加載與查看

      除了使用ld和.reload命令直接加載符號(hào)文件,某些使用符號(hào)的命令也可以觸發(fā)調(diào)試器來(lái)加載符號(hào),如:?;厮菝?k*)和反匯編命令(u)等。

      值得說(shuō)明的是,windbg缺省使用的是懶惰式符號(hào)加載策略,當(dāng)它收到模塊加載事件時(shí),它通常是不會(huì)加載符號(hào)的,符號(hào)狀態(tài)顯示為deferred(延遲加載)。

      .symopt // 顯示當(dāng)前所有符號(hào)選項(xiàng)

      .symopt+ flags // 添加符號(hào)選項(xiàng)

      .symopt- flags // 刪除符號(hào)選項(xiàng)

      !sym noisy   // 激活詳細(xì)符號(hào)加載(noisy symbol loading)顯示

      !sym quiet   // 禁止詳細(xì)符號(hào)加載顯示

      ld * // 為所有模塊加載符號(hào)

      ld kernel32 // 加載kernel32.dll的符號(hào)

      .reload // 為所有已加載模塊載入符號(hào)信息

      .reload /i // 重新加載不匹配符號(hào)的模塊【dmp文件沒(méi)有對(duì)應(yīng)的pdb時(shí)使用

      .reload /i TGame.exe // 重新加載不匹配符號(hào)的TGame.exe

      .reload /f /v // f:強(qiáng)制立即模式(不允許延遲載入)  v:詳細(xì)模式

      .reload /f @"c:\windows\System32\verifier.dll" // 為指定模塊加載符號(hào)信息

      .reload /f TGame.exe // 為T(mén)Game.exe加載符號(hào)信息

      .reload /u TGame.exe // 卸載TGame.exe及其載符號(hào)信息

      .chain  // 顯示已經(jīng)加載進(jìn)來(lái)的模塊

      x *! // 列出所有模塊對(duì)應(yīng)的符號(hào)信息

      lm // 列出所有模塊(加載和未加載)對(duì)應(yīng)的符號(hào)信息

      lmv // 列出所有模塊(加載和未加載)對(duì)應(yīng)的符號(hào)信息

      lmvm ntdll  // 查看ntdll.dll的詳細(xì)信息(注意exe、dll等都不要帶后綴名)

      x ConsoleTest!* // 列出ConsoleTest模塊中的所有符號(hào)

      x ConsoleTest!add* // 列出ConsoleTest模塊中的所有add開(kāi)頭的符號(hào)

      x /t /v ConsoleTest!* // 帶數(shù)據(jù)類(lèi)型、符號(hào)類(lèi)型和大小信息,列出ConsoleTest模塊中的所有符號(hào)

      x kernel32!*LoadLib* // 列出kernel32模塊中所有含LoadLib字樣的符號(hào)

      #進(jìn)程

      |   // 列出調(diào)試進(jìn)程

      |*  // 列出調(diào)試進(jìn)程

      |N  // 參看序數(shù)為N的調(diào)試進(jìn)程

      |Ns // 切換序數(shù)為N的進(jìn)程為當(dāng)前調(diào)試進(jìn)程

      #線(xiàn)程

      ~   // 列出線(xiàn)程

      ~*  // 所有線(xiàn)程

      ~* k // 所有線(xiàn)程堆棧信息

      ~* r // 所有線(xiàn)程寄存器信息

      ~.  // 查看當(dāng)前線(xiàn)程

      ~0s // 查看主線(xiàn)程

      ~# // 查看導(dǎo)致當(dāng)前事件或異常的線(xiàn)程

      ~N  // 查看序數(shù)為N的線(xiàn)程

      ~~[n]  // 查看線(xiàn)程ID為n的線(xiàn)程

      ~Ns   // 切換序數(shù)為N的線(xiàn)程為當(dāng)前調(diào)試線(xiàn)程

      ~N f  // 凍結(jié)序數(shù)為N的線(xiàn)程

      ~N u // 解凍序數(shù)為N的線(xiàn)程

      ~N n  // Suspend序數(shù)為N的線(xiàn)程

      ~N m // Resume序數(shù)為N的線(xiàn)程

      ~* e !gle // 顯示所有線(xiàn)程最后的一個(gè)錯(cuò)誤信息  e后可以為任意windbg命令

      .ttime  // 查看當(dāng)前線(xiàn)程時(shí)間信息

      !runaway  //顯示當(dāng)前進(jìn)程的所有線(xiàn)程時(shí)間信息

       

      #斷點(diǎn)

      bl   // 列出所有斷點(diǎn)

      bc * // 清除所有斷點(diǎn)

      bc 1 // 清除1號(hào)斷點(diǎn)

      bc 1 2 5  // 清除1號(hào)、2號(hào)、5號(hào)斷點(diǎn)

      be *  // 啟用所有斷點(diǎn)

      be 1  // 啟用1號(hào)斷點(diǎn)

      be 1 2 5 // 啟用1號(hào)、2號(hào)、5號(hào)斷點(diǎn)

      bd *  // 禁用所有斷點(diǎn)

      bd 1  // 禁用1號(hào)斷點(diǎn)

      bd 1 2 5 // 禁用1號(hào)、2號(hào)、5號(hào)斷點(diǎn)

      bp 7c801b00  // 在7c801b00地址處放置一個(gè)斷點(diǎn)

      bp `ConsoleTest.cpp:36`  // 在ConsoleTest.cpp的36行處放置一個(gè)斷點(diǎn)

      bp main // 在main函數(shù)的起始處放置一個(gè)斷點(diǎn)

      bp CSecondLoader::CSecondLoader  // 在CSecondLoader的構(gòu)造函數(shù)處放置一個(gè)斷點(diǎn)

      bp TestCommon! CTest::add  // 在TestCommon.dll的Test.cpp文件的CTest::add()函數(shù)起始處放置一個(gè)斷點(diǎn)

      bp `ConsoleTest.cpp:40` ".if (poi(pVar)>5) {}; {g}" // ".if (Condition) {Optional Commands}; {g}"    條件斷點(diǎn) pVar指針指向的值>5,執(zhí)行空語(yǔ)句;),斷住  否則繼續(xù)執(zhí)行

      bp `ConsoleTest.cpp:40` "j (poi(pVar)>5) ' ''g'" // "j (Condition) 'Optional Commands'; 'g'"    j為條件表示式:條件斷點(diǎn) pVar指針指向的值>5,執(zhí)行空語(yǔ)句;,斷住  否則繼續(xù)執(zhí)行

      注:Condition表達(dá)式語(yǔ)法默認(rèn)的是MASM表達(dá)式語(yǔ)法。使用復(fù)雜C++表達(dá)式時(shí)我們需要用@@c++()將表達(dá)式包圍??;如:"j @@c++(*pVar>5) ' '; 'g'"

      ---------------------------------

      x表示的一個(gè)地址
      hi(x) 高16 bits
      low(x) 低16 bits
      by(x) 返回第一個(gè)byte
      wo(x) 返回第一個(gè)word
      dwo(x) 返回第一個(gè)dword
      qwo(x) 返回第一個(gè)4 word(Quad-word)
      poi(x) 返回第一個(gè)指針?biāo)赶虻闹?/span>

      ---------------------------------

      bp `ConsoleTest.cpp:40` "j @eax = 0xa3 ''; 'g'" // j為條件表示式:條件斷點(diǎn) 寄存器eax的值為0xa3時(shí)斷住

      bp kernel32!CreateFileA  // 在系統(tǒng)API的CreateFileA函數(shù)處放置一個(gè)斷點(diǎn)

      bp kernel32!CreateFileA ".echo;.printf\"CreateFileA(%ma,%p,%p), ret=\",poi(esp+4),dwo(esp+8),dwo(esp+c);gu;.printf\"%N\",eax;.echo;g" // 不斷住進(jìn)程情況下,打印所有的CreateFileA調(diào)用

      bp kernel32!CreateFileW ".echo;.printf\"CreateFileW(%mu,%p,%p), ret=\",poi(esp+4),dwo(esp+8),dwo(esp+c);kn;g;"  // 不斷住進(jìn)程,打印所有的CreateFileW調(diào)用及堆棧信息

      bp advapi32!RegOpenKeyExA ".echo;.printf\"RegOpenKeyExW(%p,\\\"%ma\\\",%N,%N,%p) returned: \", dwo(esp+4), poi(esp+8), dwo(esp+c), dwo(esp+10), dwo(esp+14);gu;.printf\"%N\",eax;.echo;g"  // 不斷住進(jìn)程情況下,打印所有的RegOpenKeyExA調(diào)用(打開(kāi)注冊(cè)表鍵值)

      ---------------------------------

      注意:有些函數(shù)Symbol Name與導(dǎo)出函數(shù)名可能不一致,例如SetWindowPos,這時(shí)可以用Dependency查看相應(yīng)的導(dǎo)出函數(shù)地址(Entry Point列):0x00018E5E,然后在windbg菜單“Debug”—〉“Modules...”對(duì)話(huà)框中獲得user32.dll模塊起始地址0x77d10000,在兩個(gè)值相加后的絕對(duì)地址處直接設(shè)置斷點(diǎn):bp 77d28E5E;也可以通過(guò)x user32!*命令列出全部Symbols列表,查找77d28E5E,找到SetWindowPos對(duì)應(yīng)的Symbol Name為“NtUserSetWindowPos”,然后通過(guò)符號(hào)設(shè)置斷點(diǎn):bp user32!NtUserSetWindowPos。通過(guò)符號(hào)設(shè)置斷點(diǎn)的好處是當(dāng)dll代碼改變時(shí),不需要修改,windbg會(huì)根據(jù)符號(hào)來(lái)自動(dòng)匹配函數(shù)地址。

      ---------------------------------

      bu  // 保存斷點(diǎn),其用法和bp一樣

      bm add_*  // 匹配add_開(kāi)頭的函數(shù),并在這些函數(shù)起始處都打上斷點(diǎn)

      ba w4 0x0483dfe0 // 當(dāng)對(duì)0483dfe0地址寫(xiě)操作時(shí)停下,前面要帶上0x,否則會(huì)報(bào)錯(cuò)

                                // ba [r|w|e] [Size] Addr      [r=read/write, w=write, e=execute], Size=[1|2|4 bytes]

      #調(diào)試執(zhí)行控制

      g  // Go(F5)

      gH // 執(zhí)行g(shù)H命令強(qiáng)制讓調(diào)試器返回已經(jīng)處理了這個(gè)異常?!?span style="color: #ff00ff;">Go with Exception Handled

           // 系統(tǒng)收到這個(gè)回復(fù)后會(huì)停止分發(fā)異常(因?yàn)檎{(diào)試器聲稱(chēng)已經(jīng)處理了異常),恢復(fù)調(diào)試目標(biāo)繼續(xù)執(zhí)行,

           //  但由于異常條件仍在,所以還會(huì)產(chǎn)生異常,于是再次分發(fā),WinDBG再次中斷到命令模式。

      gN // 【Go with Exception Not Handled

           // 執(zhí)行g(shù)N命令強(qiáng)制讓調(diào)試器返回沒(méi)有處理了這個(gè)異常,那么系統(tǒng)會(huì)進(jìn)一步分發(fā)該異常,

           // 如果沒(méi)有其他調(diào)試器也不處理,最后系統(tǒng)會(huì)彈出程序終止對(duì)話(huà)框。

      gu  // 執(zhí)行到當(dāng)前函數(shù)完成時(shí)停下Go Up

      Ctrl+Break  // 暫停正在運(yùn)行的程序

      p    // 單步執(zhí)行(F10)  【Step

      p 2 // 2為步進(jìn)數(shù)目

      pc   // 執(zhí)行到下一個(gè)函數(shù)調(diào)用處停下Step to  Next Call

      pa 7c801b0b // 執(zhí)行到7c801b0b地址處停下  【Step to Adress

      t     // Step into(F11) 【Trace

      tc    // 執(zhí)行到下一個(gè)進(jìn)入點(diǎn)處停下 【Trace to Next Call

      ta 7c801b12  // 執(zhí)行到7c801b12地址處停下 【Trace to Adress

      # 查看句柄

      !handle  // 查看所有句柄的ID

      !handle 000007f8 1  // 查看ID為000007f8的句柄的類(lèi)型

      !handle 000007f8 4  // 查看ID為000007f8的句柄的名稱(chēng)

      !handle 0 5  // 查看所有句柄的類(lèi)型和名稱(chēng)

      !htrace -enable  // 使用windbg調(diào)試運(yùn)行時(shí),啟用跟蹤所有打開(kāi)句柄或關(guān)閉句柄的調(diào)用以及相應(yīng)的?;厮?/span>

      !htrace  // 進(jìn)程運(yùn)行結(jié)束后,打印所有打開(kāi)句柄或關(guān)閉句柄的調(diào)用以及相應(yīng)的?;厮?/span>

      !htrace -diff  // 只打印沒(méi)有關(guān)閉的句柄的信息及?;厮?/span>

      Handle = 0x00000038 - OPEN
      Thread ID = 0x00001f34, Process ID = 0x00000638

      0x049ca83c: +0x049ca83c
      0x049d5eb4: +0x049d5eb4
      0x046c8313: +0x046c8313
      0x76d2d90a: +0x76d2d90a
      0x7451c1ff: +0x7451c1ff
      0x7450d18f: +0x7450d18f
      0x74492776: +0x74492776
      0x7450d286: +0x7450d286
      0x7450c69e: +0x7450c69e
      0x76d210d6: +0x76d210d6
      0x76d7dc30: +0x76d7dc30
      0x76d0b17e: +0x76d0b17e
      0x76ee0166: ntdll!NtCreateFile+0x00000012
      0x7542c76b: KERNELBASE!CreateFileW+0x0000035e
      0x752c3f66: kernel32!CreateFileW+0x0000004a
      0x752c53c4: kernel32!CreateFileA+0x00000036

      --------------------------------------
      Parsed 0x1 stack traces.
      Dumped 0x1 stack traces.

       

      # 查看變量

      ===  0n(十進(jìn)制)  0x(十六進(jìn)制)  0t(8進(jìn)制)  0y(2進(jìn)制)    可以使用n [8|10|16]命令來(lái)修改數(shù)值進(jìn)制表示方式(輸入n可查看當(dāng)前進(jìn)制,默認(rèn)為16進(jìn)制)===

      -- VC6.0的Link選項(xiàng)需要將/pdbtype:sept改為/pdbtype:con, 否則生成的pdb文件中將不包含如自定義結(jié)構(gòu)體,類(lèi)等信息

      dt nRet  // 查看局部變量nRet的類(lèi)型與值(函數(shù)參數(shù)變量請(qǐng)用dv命令) --注:編譯器很多時(shí)候會(huì)把一些局部變量?jī)?yōu)化掉,這個(gè)時(shí)候就會(huì)出現(xiàn)找不到nRet符號(hào)的情況

      dt ntdll!* // 顯示ntdll里的所有類(lèi)型信息

      dt *!*IMAGE_DOS*  // 顯示所有模塊中含有IMAGE_DOS字符的類(lèi)型信息

      test1!IMAGE_DOS_HEADER
      test1!PIMAGE_DOS_HEADER
      test1!_IMAGE_DOS_HEADER
      ntdll!_IMAGE_DOS_HEADER
      ntdll32!_IMAGE_DOS_HEADER
      MSVCR90D!IMAGE_DOS_HEADER
      MSVCR90D!PIMAGE_DOS_HEADER
      MSVCR90D!_IMAGE_DOS_HEADER

      dt myApp!g_app // 表示顯示myApp進(jìn)程里全局變量g_app的內(nèi)存布局(注:vc6見(jiàn)上述說(shuō)明)

      dt WindbgTest!CTest // 查看模塊WindbgTest的CTest的內(nèi)存布局(注:vc6見(jiàn)上述說(shuō)明)

      dt WindbgTest!CTest 0x0041f8d4  // 將0x0041f8d4地址處內(nèi)容按照模塊WindbgTest的CTest的內(nèi)存布局來(lái)解析(注:vc6見(jiàn)上述說(shuō)明)

      Windbg默認(rèn)會(huì)用寄存器ECX里面的值作為this指針地址,其實(shí)這樣是有時(shí)候是錯(cuò)誤的。
      有些C++編譯器在做代碼優(yōu)化之后會(huì)把 this指針?lè)旁谄渌拇嫫骼锩?,比如ESI。
      所以在調(diào)試的時(shí)候還需要讀一下匯編代碼來(lái)確定this 在哪個(gè)寄存器里面。
      比如我們看到 MOV EAX, dword ptr [ESI + 0x48h](獲取當(dāng)前對(duì)象內(nèi)存偏移為0x48h處的4字節(jié)成員變量),就可以判斷ESI 是this 指針。
      這時(shí)可以通過(guò)如下命令打印this的內(nèi)存結(jié)構(gòu):dt -b 模塊名!類(lèi)名 @esi

      dt tagMSG 0x0336e54c  // 類(lèi)型要使用tagMSG,不能使用typedef產(chǎn)生出的MSG

      typedef struct tagMSG {
          HWND hwnd;
          UINT message;
          WPARAM wParam;
          LPARAM lParam;
          DWORD time;
          POINT pt;
      } MSG, *PMSG;

      dt this // 查看this指針的類(lèi)型及成員變量(注:vc6見(jiàn)上述說(shuō)明)

      dt -b this  // 查看this指針的類(lèi)型及成員變量,如果某一成員變量為結(jié)構(gòu)體,則把其結(jié)構(gòu)成員也一一打印出來(lái)

                     // -b開(kāi)關(guān)指定遞歸顯示所有子類(lèi)型信息,-r[n]指定遞歸顯示的深度,如-r0表示不顯示子類(lèi)型信息

      dt -v _PEB @$PEB // 使用詳細(xì)模式查看PEB(process's environment block)內(nèi)存結(jié)構(gòu)

      dt _TEB ny LastErrorValue // 只查看TEB(thread's environment block)結(jié)構(gòu)成員LastErrorValue

      this->m_nPen  // 查看成員變量的值(注:vc6見(jiàn)上述說(shuō)明)

      this // 查看this指針中的成員變量(注:vc6見(jiàn)上述說(shuō)明)

      nCount // 顯示局部變量nCount的地址(前面4198608為10進(jìn)制表示地址,004010d0為16進(jìn)制表示地址) 形如:Evaluate expression: 4198608 = 004010d0

      HeapTest!CTest::Add  // 顯示HeapTest模塊中CTest類(lèi)中的Add函數(shù)地址

      dv   // 顯示當(dāng)前函數(shù)內(nèi)所有局部變量,函數(shù)參數(shù)的值

      dv n*  // 顯示當(dāng)前函數(shù)內(nèi)n開(kāi)頭的所有局部變量,函數(shù)參數(shù)的值

      dv nCount // 查看局部變量nCount的值

      dv a // 查看函數(shù)參數(shù)變量a的值

      dv /t /i /V /a|/n|/z

      /***************************************** 

      更加詳細(xì)地顯示當(dāng)前函數(shù)內(nèi)所有局部變量,函數(shù)參數(shù)信息
      i = type (local, global, parameter)
      t = data type
      V = memory address or register location
      -----------------------
      a = sort by Addr, n = sort by name, z = sort by size

      *****************************************/

      x  // 用法和dv命令一致,顯示當(dāng)前函數(shù)內(nèi)所有局部變量,函數(shù)參數(shù)變量的地址與值  --注:編譯器很多時(shí)候會(huì)把一些局部變量?jī)?yōu)化掉,這個(gè)時(shí)候就會(huì)出現(xiàn)找不到符號(hào)的情況

      #調(diào)用堆棧

      k  // 顯示當(dāng)前調(diào)用堆棧

      kn // 帶棧編號(hào)顯示當(dāng)前調(diào)用堆棧

      kb  // 打印出前3個(gè)函數(shù)參數(shù)的當(dāng)前調(diào)用堆棧

      02a9ffec 00000000 01e511f9 0174c570 00000000 kernel32!BaseThreadStart+0x37
      ----------------------------------------------
      kernel32!BaseThreadStart+0x37 當(dāng)前函數(shù)kernel32!BaseThreadStart執(zhí)行的指令地址。
      01e511f9 0174c570 00000000  參數(shù)相關(guān)的數(shù)值【從左到右 -- 參數(shù)1  參數(shù)2:offset為sizeof(參數(shù)1)  參數(shù)3:offset為sizeof(參數(shù)1)+sizeof(參數(shù)2)  ...】。注:如果是成員函數(shù),this指針通過(guò)ecx或其他寄存器來(lái)傳遞
      02a9ffec 00000000是 當(dāng)前函數(shù)ebp 和 上層函數(shù)返回地址。

      ======================================================

      Windows 7 Ultimate Service Pack 1 [Build 6.1.7601]
      CPU: Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz
      《Game》 20.15.1112 6EF76A43E6B1DD58907F3E066506E918
      ----------------------------------------
      Type: EXCEPTION_ACCESS_VIOLATION//非法地址訪(fǎng)問(wèn)異常
      Error: Read address 0x00074685//讀取0x00074685地址出錯(cuò)(該地址對(duì)應(yīng)的內(nèi)存頁(yè),進(jìn)程無(wú)讀取權(quán)限)
      Address: 64DCAF68//崩潰發(fā)生的指令地址

      CallStack:

      //0x64D90000為模塊MSVCR90.dll的基地址,3AF68為崩潰指令在模塊中的偏移值,(0492B5D0,00074685,0000000C,00462482)為參數(shù)信息
      0x64D90000[3AF68] MSVCR90.dll: (0492B5D0,00074685,0000000C,00462482)
      0X00400000[11158A] tgame.exe: (0492B5D0,00074685,00000000,00000000)

      kb 5 // 只顯示最上的5層調(diào)用堆棧

      kv   // 在kb的基礎(chǔ)上增加了函數(shù)調(diào)用約定等信息

      kp  // 顯示每一層函數(shù)調(diào)用的完整參數(shù),包括參數(shù)類(lèi)型、名字、取值(必須是完整符號(hào)的情況下,private symbols);注意:若程序被優(yōu)化,這些值不一定對(duì)

      kd  // 打印堆棧的地址

      dds 02a9ffec  // 從02a9ffec地址處,向高地址方向搜索函數(shù)調(diào)用棧幀

      dds  // 執(zhí)行完dds 02a9ffec后,可通過(guò)dds命令繼續(xù)進(jìn)行搜索

      .frame // 顯示當(dāng)前棧幀

      .frame n // 設(shè)置編號(hào)n的棧幀為當(dāng)前棧幀(n為16進(jìn)制數(shù))

      .frame /r n // 設(shè)置編號(hào)n的棧幀為當(dāng)前棧幀(n為16進(jìn)制數(shù)) 并顯示寄存器變量

      !uniqstack // 顯示所有線(xiàn)程的調(diào)用堆棧

      #查看匯編

      u .  // 反匯編當(dāng)前eip寄存器地址的后8條指令

      u $eip  // 反匯編當(dāng)前eip寄存器地址的后8條指令

      ub .  // 反匯編當(dāng)前ip寄存器地址的前8條指令

      ub $eip  // 反匯編當(dāng)前eip寄存器地址的前8條指令

      u main+0x29 L30 // 反匯編main+0x29地址的后30條指令

      u  // 反編譯下8條指令

      uf CTest::add  // 反匯編CTest類(lèi)的add函數(shù)

      uf /c main  // 反匯編main函數(shù),通過(guò)/c可以查看main函數(shù)中的函數(shù)調(diào)用(call)都有哪些

      ub 000c135d L20  // 查看地址為000c135d指令前的20條指令內(nèi)容

       

      #寄存器

      r // 顯示所有寄存器信息及發(fā)生core所在的指令

      r eax, edx // 顯示eax,edx寄存器信息

      r eax=5, edx=6  // 對(duì)寄存器eax賦值為5,edx賦值為6

      #內(nèi)存

      -- 注:windbg不支持中文顯示

      !address // 查看進(jìn)程的所有內(nèi)存頁(yè)屬性

      !address 7ffd8000  // 查看7ffd8000地址處內(nèi)存頁(yè)屬性

      dd /c 5 7c801e02  // 從7c801e02內(nèi)存處開(kāi)始以dword為單位顯示內(nèi)存(寬度為:5)【默認(rèn)顯示128字節(jié)長(zhǎng)度的內(nèi)容】

      dd /c 5 7c801e02 L8  // 從7c801e02內(nèi)存處開(kāi)始以dword為單位顯示內(nèi)存(寬度為:5)【顯示8個(gè)dword】

      da /c 100 7c80ff03  // 從7c80ff03內(nèi)存處開(kāi)始顯示Ascii字符串(寬度為:100)

      du /c 100 7c8022f5  // 從7c8022f5內(nèi)存處開(kāi)始顯示Unicode字符串(寬度為:100)

      /*****************************************

      d[a| u| b| w| W| d| c| q| f| D] [/c 列數(shù)] [地址]

      a = ascii chars
      u = Unicode chars
      b = byte + ascii   -- 和UE一樣,左邊為byte為單位的二進(jìn)制內(nèi)容,右邊塊為ascii形式的字符串內(nèi)容
      w = word (2b)
      W = word (2b) + ascii
      d = dword (4b)
      c = dword (4b) + ascii
      q = qword (8b)
      f = floating point (single precision - 4b)
      D = floating point (double precision - 8b)

      *****************************************/

      dyb /c 3 7c801e02  // 從7c801e02內(nèi)存處開(kāi)始,顯示byte及二進(jìn)制(寬度為:3)

      /*****************************************

      dy[b | d] ..   // b = binary+byte     d = binary+dword

      *****************************************/

      s -w 522e0000 L0x100  0x1212 0x2212 0x1234 // 表示在起始地址522e0000之后的0x100個(gè)單位內(nèi)搜索0x1212 0x2212 0x1234系列的起始地址

      s -u 522e0000 527d1000 "web"  //表示在522e0000 和527d1000之間搜索Unicode 字符串”web”

      ea 0x445634 "abc"  // 表示在0x445634地址寫(xiě)入Ascii字符串a(chǎn)bc, 不包含結(jié)束符0

      eza 0x445634 "abc"  // 表示在0x445634地址寫(xiě)入Ascii字符串a(chǎn)bc, 包含結(jié)束符0

      eu 0x445634 "abc"  // 表示在0x445634地址寫(xiě)入U(xiǎn)nicode字符串a(chǎn)bc, 不包含結(jié)束符0

      ezu 0x445634 "abc"  // 表示在0x445634地址寫(xiě)入U(xiǎn)nicode字符串a(chǎn)bc, 包含結(jié)束符0

      ed nCounter 80  // 將變量nCounter的值修改為80(注:80為10進(jìn)制還是16進(jìn)制,還是其他,取決于當(dāng)前進(jìn)制)

      .writemem D:\Test\0041a5e4.bin 0041a5e4 L1000  // 將內(nèi)存地址處0x0041a5e4后面0x1000長(zhǎng)度的內(nèi)容拷貝存儲(chǔ)到D:\Test\0041a5e4.bin中

      #查看堆(Heap)

      !heap -s  // 顯示進(jìn)程堆的個(gè)數(shù)(每一項(xiàng)是一個(gè)堆,也就是_HEAP結(jié)構(gòu)指針,對(duì)應(yīng)的API是HeapCreate)

      Heap Flags Reserv Commit Virt Free List UCR Virt Lock Fast
      (k) (k) (k) (k) length blocks cont. heap
      -----------------------------------------------------------------------------
      00140000 50000062 1024 12 12 1 1 1 0 0 L
      00240000 50001062 64 24 24 15 1 1 0 0 L
      00250000 50008060 64 12 12 10 1 1 0 0
      00380000 50001063 64 12 12 4 2 1 0 bad
      -----------------------------------------------------------------------------

      dt _HEAP 00140000  // 選取一個(gè)堆的地址,打印該堆的內(nèi)存結(jié)構(gòu)

      ntdll!_HEAP
      +0x000 Entry : _HEAP_ENTRY
      +0x008 Signature : 0xeeffeeff
      +0x00c Flags : 0x50000062
      +0x010 ForceFlags : 0x40000060
      +0x014 VirtualMemoryThreshold : 0xfe00
      +0x018 SegmentReserve : 0x100000
      +0x01c SegmentCommit : 0x2000
      +0x020 DeCommitFreeBlockThreshold : 0x200
      +0x024 DeCommitTotalFreeThreshold : 0x2000
      +0x028 TotalFreeSize : 0xaf
      +0x02c MaximumAllocationSize : 0x7ffdefff
      +0x030 ProcessHeapsListIndex : 1
      +0x032 HeaderValidateLength : 0x608
      +0x034 HeaderValidateCopy : (null)
      +0x038 NextAvailableTagIndex : 0
      +0x03a MaximumTagIndex : 0
      +0x03c TagEntries : (null)
      +0x040 UCRSegments : (null)
      +0x044 UnusedUnCommittedRanges : 0x00140598 _HEAP_UNCOMMMTTED_RANGE
      +0x048 AlignRound : 0x17
      +0x04c AlignMask : 0xfffffff8
      +0x050 VirtualAllocdBlocks : _LIST_ENTRY [ 0x140050 - 0x140050 ]
      +0x058 Segments : [64] 0x00140640 _HEAP_SEGMENT
      +0x158 u : __unnamed
      +0x168 u2 : __unnamed
      +0x16a AllocatorBackTraceIndex : 0
      +0x16c NonDedicatedListLength : 1
      +0x170 LargeBlocksIndex : (null)
      +0x174 PseudoTagEntries : (null)
      +0x178 FreeLists : [128] _LIST_ENTRY [ 0x142a90 - 0x142a90 ]
      +0x578 LockVariable : 0x00140608 _HEAP_LOCK
      +0x57c CommitRoutine : (null)
      +0x580 FrontEndHeap : 0x00140688 Void
      +0x584 FrontHeapLockCount : 0
      +0x586 FrontEndHeapType : 0x1 ''
      +0x587 LastSegmentIndex : 0 ''

      !heap -a 00140000 // 選取一個(gè)堆的地址,打印該堆的信息,比上面打印內(nèi)存命令更詳細(xì)直觀

      Index Address Name Debugging options enabled
      1: 00140000
      Segment at 00140000 to 00240000 (00003000 bytes committed)
      Flags: 50000062
      ForceFlags: 40000060
      Granularity: 8 bytes
      Segment Reserve: 00100000
      Segment Commit: 00002000
      DeCommit Block Thres: 00000200
      DeCommit Total Thres: 00002000
      Total Free Size: 000000af
      Max. Allocation Size: 7ffdefff
      Lock Variable at: 00140608
      Next TagIndex: 0000
      Maximum TagIndex: 0000
      Tag Entries: 00000000
      PsuedoTag Entries: 00000000
      Virtual Alloc List: 00140050
      UCR FreeList: 00140598
      FreeList Usage: 00000000 00000000 00000000 00000000
      FreeList[ 00 ] at 00140178: 00142a90 . 00142a90
      00142a88: 00050 . 00578 [14] - free
      Segment00 at 00140640:
      Flags: 00000000
      Base: 00140000
      First Entry: 00140680
      Last Entry: 00240000
      Total Pages: 00000100
      Total UnCommit: 000000fd
      Largest UnCommit:000fd000
      UnCommitted Ranges: (1)
      00143000: 000fd000

      Heap entries for Segment00 in Heap 00140000
      00140000: 00000 . 00640 [01] - busy (640)
      00140640: 00640 . 00040 [01] - busy (40)
      00140680: 00040 . 01818 [07] - busy (1800), tail fill - unable to read heap entry extra at 00141e90
      00141e98: 01818 . 00040 [07] - busy (22), tail fill - unable to read heap entry extra at 00141ed0
      00141ed8: 00040 . 00050 [07] - busy (36), tail fill - unable to read heap entry extra at 00141f20
      00141f28: 00050 . 002f0 [07] - busy (2d8), tail fill - unable to read heap entry extra at 00142210
      00142218: 002f0 . 00330 [07] - busy (314), tail fill - unable to read heap entry extra at 00142540
      00142548: 00330 . 00330 [07] - busy (314), tail fill - unable to read heap entry extra at 00142870
      00142878: 00330 . 00040 [07] - busy (24), tail fill - unable to read heap entry extra at 001428b0
      001428b8: 00040 . 00028 [07] - busy (10), tail fill - unable to read heap entry extra at 001428d8
      001428e0: 00028 . 00058 [07] - busy (40), tail fill - unable to read heap entry extra at 00142930
      00142938: 00058 . 00058 [07] - busy (40), tail fill - unable to read heap entry extra at 00142988
      00142990: 00058 . 00060 [07] - busy (44), tail fill - unable to read heap entry extra at 001429e8
      001429f0: 00060 . 00020 [07] - busy (1), tail fill - unable to read heap entry extra at 00142a08
      00142a10: 00020 . 00028 [07] - busy (10), tail fill - unable to read heap entry extra at 00142a30
      00142a38: 00028 . 00050 [07] - busy (36), tail fill - unable to read heap entry extra at 00142a80
      00142a88: 00050 . 00578 [14] free fill
      00143000: 000fd000 - uncommitted bytes.

      #虛擬內(nèi)存

      !vadump  // 查看虛擬內(nèi)存布局 

      #設(shè)置事件發(fā)生時(shí)windbg行為

      sx // 顯示windbg遇到每個(gè)異常和事件時(shí)的行為

      sxr // 將所有異常和事件過(guò)濾器的狀態(tài)重設(shè)為默認(rèn)值

      sxe  ld // 當(dāng)加載模塊時(shí),立即中斷(Break)到調(diào)試器中(第一次處理機(jī)會(huì))

      sxd ud // 當(dāng)卸載模塊時(shí),windbg不會(huì)在第一次處理機(jī)會(huì)時(shí)中斷(雖然會(huì)顯示信息)。如果其他錯(cuò)誤處理器沒(méi)有處理掉該異常,執(zhí)行會(huì)停止下來(lái)并中斷(Break)到windbg中(第二次處理機(jī)會(huì))

      sxn et // 當(dāng)線(xiàn)程退出時(shí),windbg會(huì)打印出一條消息

      sxi ct // 當(dāng)線(xiàn)程創(chuàng)建時(shí),windbg不中斷也不打印消息

      #dump輸出

       .dump /ma "d:\mydmpfile.dmp" // 將當(dāng)前調(diào)試進(jìn)程輸出Dump文件

      #其他元命令

      .tlist  // 顯示所有進(jìn)程

      .cls  // 清除屏幕

      .logopen c:\1.log   // 將command內(nèi)容輸出到c:\1.log文件中

      .logclose  // 關(guān)閉當(dāng)前打開(kāi)的日志

      #其他擴(kuò)展命令

      !analyze -v  // 詳細(xì)顯示當(dāng)前異常信息

      !peb // 格式化輸出PEB信息(process's environment block)

      PEB at 7efde000
      InheritedAddressSpace: No
      ReadImageFileExecOptions: No
      BeingDebugged: No
      ImageBaseAddress: 00f20000
      Ldr 76fa0200
      Ldr.Initialized: Yes
      Ldr.InInitializationOrderModuleList: 003a4d78 . 003e4a00
      Ldr.InLoadOrderModuleList: 003a4ce8 . 003e49f0
      Ldr.InMemoryOrderModuleList: 003a4cf0 . 003e49f8
      Base TimeStamp Module
      f20000 54772f74 Nov 27 22:04:36 2014 C:\Program Files (x86)\Citrix\ICA Client\wfcrun32.exe
      76ea0000 5684255b Dec 31 02:41:31 2015 C:\windows\SysWOW64\ntdll.dll
      74790000 568425ff Dec 31 02:44:15 2015 C:\windows\syswow64\kernel32.dll
      75b00000 56842600 Dec 31 02:44:16 2015 C:\windows\syswow64\KERNELBASE.dll
      ... ...
      71d40000 55a5cad6 Jul 15 10:52:06 2015 C:\windows\System32\msxml6.dll
      71d20000 4a5bdb38 Jul 14 09:11:20 2009 C:\windows\System32\bcrypt.dll
      71ce0000 5600ce51 Sep 22 11:43:13 2015 C:\windows\SysWOW64\bcryptprimitives.dll
      SubSystemData: 00000000
      ProcessHeap: 003a0000
      ProcessParameters: 003a2188
      CurrentDirectory: 'C:\windows\system32\'
      WindowTitle: '"C:\Program Files (x86)\Citrix\ICA Client\wfcrun32.exe"'
      ImageFile: 'C:\Program Files (x86)\Citrix\ICA Client\wfcrun32.exe'
      CommandLine: '"C:\Program Files (x86)\Citrix\ICA Client\wfcrun32.exe" -Embedding'
      DllPath: 'C:\Program Files (x86)\Citrix\ICA Client;C:\windows\system32;C:\windows\system;C:\windows;
      Environment: 003a07f0
      =::=::\
      ALLUSERSPROFILE=C:\ProgramData
      APPDATA=C:\Users\kekec\AppData\Roaming
      CommonProgramFiles=C:\Program Files (x86)\Common Files
      CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
      CommonProgramW6432=C:\Program Files\Common Files
      COMPUTERNAME=KEKEC-PC1
      ComSpec=C:\windows\system32\cmd.exe
      DXSDK_DIR=D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\
      FP_NO_HOST_CHECK=NO
      HOMEDRIVE=C:
      HOMEPATH=\Users\kekec
      include=D:\Program Files (x86)\Microsoft Visual Studio\VC98\atl\include;D:\Program Files (x86)\Microsoft Visual Studio\VC98\mfc\include;
      lib=D:\Program Files (x86)\Microsoft Visual Studio\VC98\mfc\lib;D:\Program Files (x86)\Microsoft Visual Studio\VC98\lib
      LOCALAPPDATA=C:\Users\kekec\AppData\Local
      LOGONSERVER=\\GM-HEIJI
      MSDevDir=D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98
      NUMBER_OF_PROCESSORS=8
      OS=Windows_NT
      Path=C:\ProgramData\Oracle\Java\javapath;C:\windows\system32;C:\windows;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;
      PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
      PROCESSOR_ARCHITECTURE=x86
      PROCESSOR_ARCHITEW6432=AMD64
      PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 60 Stepping 3, GenuineIntel
      PROCESSOR_LEVEL=6
      PROCESSOR_REVISION=3c03
      ProgramData=C:\ProgramData
      ProgramFiles=C:\Program Files (x86)
      ProgramFiles(x86)=C:\Program Files (x86)
      ProgramW6432=C:\Program Files
      PSModulePath=C:\windows\system32\WindowsPowerShell\v1.0\Modules\
      PUBLIC=C:\Users\Public
      SESSIONNAME=Console
      SystemDrive=C:
      SystemRoot=C:\windows
      TEMP=C:\Users\kekec\AppData\Local\Temp
      TMP=C:\Users\kekec\AppData\Local\Temp
      USERDNSDOMAIN=TENCENT.COM
      USERDOMAIN=TENCENT
      USERNAME=kekec
      USERPROFILE=C:\Users\kekec
      VS120COMNTOOLS=D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\
      VS80COMNTOOLS=D:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\
      VS90COMNTOOLS=d:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
      windir=C:\windows

      !gle  // 打印當(dāng)前線(xiàn)程最近的錯(cuò)誤信息LastError

      !gle -all  // 打印所有線(xiàn)程的最近的錯(cuò)誤信息

      !error  897// 顯示錯(cuò)誤碼為897的詳細(xì)描述信息

      #幫助

      中文在線(xiàn)幫助:http://www./windbghelp/index.html

      windbg cmd: http://www./kewuc/windbg-cmds 【下載

      WinDbg 命令三部曲:(一)WinDbg 命令手冊(cè)

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多