天天看點

windbg指令集合

調試會話

.create :建立新的程序并調試 例子 .create notepad.exe

.attach:附加到指定程序         例子 .attach 2568

.restart:讓調試目标重新運作 例子 .restart 或者.restart /f

.crash:強制目标系統崩潰(核心态) 例子 .crash

.reboot:重新開機目标系統(核心态) 例子 .reboot

.detach:分離調試目标 例子 .detach

q:終止調試 例子 q

子產品和符号

.symfix:設定符号伺服器 例子 .symfix c:\symbols

.reload:重新整理子產品和符号 例子 .reload 或者.reload /f

ld:加載符号檔案 例子 ld kernel32

.sympath:顯示或者設定符号路徑 例子 .sympath 或者.sympath+d:\sym\

!sym:顯示符号選項 例子 !sym noisy 或者!sym quiet

x:顯示符号  例子 x VAXPlayer!* 顯示vaxplayer庫中所有的符号

ln:搜尋符号 例子 ln aebc6eac(可以查找符号來對應動态庫)

lm:列子產品或顯示子產品詳情 例子 lm (可以檢視對應的pdb檔案)  lmf(可以檢視程式運作的時候對于的dll資訊)

!lmi :子產品或pdb檔案詳情 例子 !lmi ntdll

!dlls:動态庫資訊  例子 !dlls -a

!dh:觀察PE檔案頭  例子 !dh 76930000 -a

轉儲檔案

.dump :産生轉儲檔案  例子 .dump /mfh c:\a.dmp

!analyze:自動分析  例子 !analyze -v

.writemem:将記憶體資料寫到檔案 例子 .writemen c:\dump\test.txt 07288600 L2000

程序

|:顯示或切換程序(使用者态)  例子 |* 或者|2s

!process:顯示程序 例子 !process 0 0

!dml_proc:觀察程序資訊 例子 !dml_proc $$以DML方式顯示程序資訊

.process:顯示或切換程序(核心态) 例子 .process /i 9382a560

.kill:殺程序  例子 .kill 8adc85f0

!peb:觀察程序資訊  例子 !peb

dt:觀察資料結構 例子 dt [email protected]$peb -r

.tlist:列程序  例子 .tlist 列出調試器所在系統的所有程序

線程

~:顯示/切換線程 例子 ~*顯示所有線程 ~2s切換到2号線程

!teb:顯示線程塊  例子 !teb

.thread: 顯示或切換線程(核心态) 例子 .thread 80551d20 或.thread /p 8747da8

!thread:觀察線程(核心态)  例子!thread

!wow64exts.info:運作在64bit系統的32bit線程資訊 例子 !wow64exts.info

!wow64exts.sw:32bit和64bit調試器切換 例子 !wow64exts.sw

記憶體

!address:觀察記憶體空間 例子 !address

!address:觀察記憶體塊屬性 例子 !address 0728988a

d:顯示記憶體資料  例子 db e2001744

dt:按類型顯示記憶體資料  例子 dt _GUID 014511471

e:編輯記憶體資料 例子 eb 00175487 ff

!dd:讀取實體位址  例子 !dd fffffff0

!ed:寫實體位址  例子 !ed fffffff0 8000

!vtop:虛拟位址轉換為實體位址  例子 !vtop 0 badfde064

!pte:顯示頁表項  例子 !pte f6551410

!memusage:顯示實體記憶體使用情況 例子 !memusage

!pool:顯示核心池資訊  例子 !pool e326c000

!vad:觀察程序的位址空間 例子 !vad 8a761451

!sdbgext.hwnd:觀察視窗句柄  例子 !sbdgext.hwnd 001506c1

!heap:顯示堆資訊  例子 !heap  01671010  -a

k:函數調用序列  例子 ~*kbn

.frame :切換目前棧幀 例子 .frame 2

dds:顯示資料和符号  例子 dds 80418424

dv:顯示局部變量 例子  dt

寄存器

r:讀寫寄存器  例子  r cr3

rdmsr:讀取MSR寄存器  例子 rdmsr 19c

上下文

.ecxr:切換到異常上下文  例子 .ecxr

.tss:切換到指定TSS 例子 .tss 28

.trap:切換到陷阱棧  例子 .trap 80541471

.effmach:切換32和64bit上下文  例子 .effmach X86

斷點

bp:軟體斷點  例子  bp test!test.cpp:65

ba:硬體斷點  例子 ba w4 00006484

bm:成批設定斷點  例子 bm /a nt!Dbgk*

bd/be/bc/dl:管理斷點

執行和跟蹤

g:恢複執行  例子 g

p:單步執行  例子 p

t:單步跟蹤  例子 t

wt:自動跟蹤 例子 wt -l 3

反彙編

u:反彙編  例子 u nt!PsGetcutrentID

uf:反彙編整個函數  例子 uf RtlLeaveCriticalSection

ub:反向反彙編  例子 ub 14785214

a :彙編   例子  a<位址>

死鎖

!locks:掃描關鍵區(使用者态)或ERESOURCE(核心态)  例子 !locks

!cs:觀察關鍵區  例子 !cs -l

!alpc:觀察ALPC端口  例子   !alpc /m 02145895

處理器

!pcr:管理處理器控制區  例子 !pcr

dg:觀察段描述符  例子 dg @fs

!cpuid:顯示CPU型号  例子 !cpuid

!cpuinfo:顯示cpu屬性(核心态)  例子 !cpuinfo

!irql:顯示儲存的IRQL