WinDbg DUMP 調試

WinDbg DUMP 調試


設置符號路徑

可以在命令行中通過 .sympath 命令來設置符號路徑,也可通過 菜單項 來設置。
符號路徑有兩種,一是本地路徑,例如:D:\MySymbols;二是遠程服務器路徑,例如 SRV*CachePath(本地緩存)*RomotePath(遠程服務器)
多個符號路徑通過 “;” 連接。

  • 命令行
.sympath D:\MySymbols;SRV*D:\MsSymbols*http://msdl.microsoft.com/download/symbols;SRV*D:\AppSymbols*http://***.cn/symbols/app
  • 菜單(File -> Symbol File Path…)
D:\MySymbols;SRV*D:\MsSymbols*http://msdl.microsoft.com/download/symbols;SRV*D:\AppSymbols*http://***.cn/symbols/app

如上操作設置了三個符號路徑,首先是本地路徑 D:\MySymbols,然後是從 Microsoft符號服務器 緩存符號文件到 D:\MsSymbols,最後是從 APP符號服務器 緩存符號文件到 D:\AppSymbols

基礎命令

  • 命令
    • 基本命令:40多個
      • 使用 “?” 查看所有
    • 元命令:100多個
      • 使用 “.help” 查看所有
        • .help /D a* : 鏈接方式顯示 a 開頭的命令
        • .hh : 打開CHM
      • 命令前加前綴 “.”
    • 擴展命令
      • .chain : 查看所有擴展
      • !模塊名.help : 查看模塊內的命令(!ext.help)
      • 命令前加前綴 “!”
  • 基本設置
    • 清屏命令:.cls
    • 設置進制命令:n [8|10|16]
    • 處理器模式指令:.effmach [](Effective Machine Type,.effmach x86)
    • 格式化顯示:.formats 0xa
  • 調試
    • 掛載進程:Windbg –p PID;Windbg -pn 進程名
    • 打開DUMP文件:.opendump 文件名
    • 解掛進程:.detach
    • 結束當前調試會話:q | qq | qd
    • 黑科技
      • .crash : 引發一個系統藍屏,生成 Dump 文件
      • .reboot : 使系統重啓,不產生 Dump 文件

調試方法

  • 幫助
? : help on commands that affect the debugee
.help : help on commands that affect the debugger
.hh command : view the on line help file
!help : help on the extension dll at the top of the chain (e. g., SOS)
  • 符號加載
.sympath : 設置符號路徑
.symfix : 自動將符號路徑設置爲 MS 公有符號服務器
.reload : 枚舉已加載的模塊,尋找符號文件
.reload /f /i Test.exe : 強制加載
    - /f : 強制加載
    - /i : 不檢查 pdb 的版本信息
    - /v : 將搜索過程中的詳細信息都顯示出來
    - .reload /f Test.exe=0x400000,0x<imagesize>,0x<timestamp>
!sym : 加載選項
    - !sym noisy : 可以將整個加載symbol的過程打印出來
    - !sym quiet : 不顯示 symbol 加載過程
  • 符號匹配
.symopt:查看當前設置的符號選項
.symopt+ 0x40:exe和pdb鬆匹配
.symopt- 0x40:恢復嚴格匹配
.reload /f /i test.exe:忽略匹配,強制加載
  • 加載 SOS 擴展
.loadby sos clr
!eeversion // 查看sos版本
  • 查看堆棧
!analyze // 非託管
    - v : 顯示異常的詳細信息
    - f : 強制將任何事件都當作異常來分析

!dumpstack // 託管+非託管
!EEStack : 對每個活躍的線程調用 DumpStack
    - ee : 託管代碼
    - short : “感興趣” 的線程

!clrstack  // 託管
    !ClrStack -l : 顯示局部變量信息
    !ClrStack -p : 顯示託管代碼幀棧的所有參數
    !ClrStack –a :-l & -p

~*e!clrstack
~0e!clrstack

!pe : Print Exception
!PrintException <address>
  • 查看對象
.exr : displays the contents of an exception record
.cxr : displays the context record saved at the specified address

!DumpObj <Object address>
!IP2MD <Code address>
!DumpIL <MethodDesc>
  • 查看文件頭
lm // list loaded modules
    - v : 詳細信息
    - m *?* : 通配符
    - a ? : 地址
!dh AppName.exe
  • 線程調試
!threads : 查看所有線程(可以看到哪個線程有異常)
~*s : 切換線程
!runaway : 查看線程CPU運行時間
.ttime : 查看線程耗時
!threads : 查看所有託管線程
!threads : view managed threads
!clrstack : view the managed call stack
!dumpstack : view combined unmanaged & managed call stack
!clrstack -p : view function call arguments
!clrstack –l : view stack (local) variables
!name2ee module class : view addresses associated with a class or method
!dumpmt –md address : view the method table & methods for a class
!dumpmd address : view detailed information about a method
!do address : view information about an object
!dumpheap –stat : view memory consumption by type
!dumpheap –min size : view memory consumption by object when at least size
!dumpheap –type type : view memory consumption for all objects of type type
!gcroot address : view which object are holding a reference to address
!syncblk : view information about managed locks
.load C:\CurrectFiles\sos (C:\Windows\Microsoft.NET\Framework\v4.0.30319)

相關工具

  • DIA SDK
  • DumpBin.exe
  • C:\Program Files (x86)\Debugging Tools for Windows (x86) (Microsoft)
    • symstore.exe : 符號存儲(創建目錄層級)
    • symsrv : 符號管理與獲取
    • symchk.exe
      symchk.exe D:\MsSymbols\cfgmgr32.dll\4CE7B78727000\cfgmgr32.dll -v -s D:\MsSymbols
      symchk.exe D:\AppName.exe -v -s SRV*D:\AppSymbols*http://***.cn/symbols/app
      
    • cdb.exe : 命令行調試
  • breakpad\crashpad (Google)
    • Client : 捕獲異常,生成 DUMP 並上報
    • Symbol dumper : 根據調試信息生成符號文件
      • dump_syms : 生成符號文件、符號文件轉換
      • generate_breakpad_symbols.py:自動生成所有符號文件(包括目錄)
    • Processor : 調試器
      • minidump_stackwalk : 調試

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章