WinDbg常用除錯命令

2021-06-25 14:06:50 字數 1565 閱讀 5457

寫在前面的話:

除錯當然可以用windbg,樓主發現先用debugdiagnostictool來分析更棒。但是樓主發現1.2版的debugdiag有advanced analysis,但2.0版本又沒有了,非常不解,看來只能用1.2版本。分析前先設定pdb路徑,tools-options and settings..,folders and search paths屬性頁裡設定,第乙個就是分析時搜尋的pdb路徑。

如何用windbg除錯就不說了,滿大街就是。此文只記錄些常用的命令,不斷補充,以備不時之需。只記錄簡單用法或命令名,具體用法查windbg的debugging help。這裡面的三篇文章對於除錯非託管**還是很有用的。

!analyze:自動分析出異常資訊,一般用法「!analyze -v」。

lm:列出載入的所有模組和每個模組的符號資訊,一般用法「lm」或「lm vm test.dll」顯示所有模組或顯示指定模組資訊資訊。

k*:顯示堆疊,一般用法「kb」。

dt:顯示區域性、全域性等變數的值,一般用法「dt cstring 0x06a6e344」,把0x06a6e344的位址解析為cstring型別並顯示出來。

!wow64exts.sw:32位託管程式在64位機器上執行,產生的也是64位dump時,就得呼叫這個命令切換到32位模式下來除錯。

.load或.loadby:載入乙個新的擴充套件dll到偵錯程式裡,一般用法「.loadby sos clr」,呼叫c#程式常用命令。

!dso:把當前棧上所有的變數都顯示出來,除錯c#用,「.loadby sos clr」配合這個命令可顯示一些東東。

!clrstack:這個命令不錯,除錯c#用,可顯示堆疊,使用!clrstack可以檢視當前的條用堆疊,使用!clrstack -l可以檢視當前呼叫堆疊以及其上的區域性變數和值,使用!clrstack -p可以檢視當前呼叫堆疊上的引數變數以及值,使用!clrstack -a可以檢視當前堆疊上所有區域性變數和引數變數以及值(格式為stackaddress =  stackvalue)。!clrstack命令只會顯示託管**的呼叫堆疊,如果想檢視完整的呼叫堆疊可以使用!dumpstack命令。

!eestack:可列印出所有執行緒的堆疊資訊,如果!clrstack無效(報「failed to start stack walk: 80070057」),可試著用此命令。注意在64位機器上取32程式的dump時,最好用32位取dump的程式,否則可能!clrstack無用。

x:顯示指定模組中的符號,一般用法「x test!*m_*」顯示test模組中含m_的符號。

d*:顯示給定記憶體的內容,一般用法「dc 0x06a6e344」顯示0x06a6e344處的內容。

!address:顯示記憶體資訊,一般用法「!address0x06a6e344」顯示0x06a6e344處內在的屬性。

dpa或dpu:顯示給定記憶體以ansi或unicode格式編碼的字元。

.cls:清屏。

.chain:顯示載入的擴充套件dll。

!cs:顯示乙個或多個臨界區資訊,比如「!cs 0x21ba1980」顯示0x21ba1980的臨界區資訊,!cs -l僅顯示鎖定的臨界區。

.ecxr:命令定位當前異常的上下文資訊,並顯示指定記錄中的重要暫存器。

WinDBG常用除錯命令

查詢符號 3.檢視 event 物件的訊號狀態 object basenamedobjects dt b nt kevent xx 4.檢視 lasterror 值 gle 5.指定進製形式,0x 0n 0t 0y 分別表示 16 10 8 2 進製 0x12345678 0n10 evaluate...

WinDbg設定和常用除錯命令

1.安裝好後先設定環境變數 nt symbol path srv 本地目錄 store 本地目錄主要要來存放 symbols analyze 自動分析出異常資訊,一般用法 analyze v lm 列出載入的所有模組和每個模組的符號資訊,一般用法 lm 或 lm vm test.dll 顯示所有模組...

Windbg 核心除錯 常用命令

運用windbg進行核心除錯,熟練的運用命令列是必不可少的技能.但是面對眾多繁瑣的命令,實在是不可能全部的了解和掌握.而了解kernel正是需要這些命令的指引,不斷深入理解其基本的內容.下面,將介紹最常用的一些指令,使初學kernel除錯的朋友們能有乙個大致的了解.至於如何熟練的運用它們,還需要實際...