WinDBG常用除錯命令

2021-04-19 09:37:24 字數 3203 閱讀 3103

.    查詢符號

3. 檢視 event 物件的訊號狀態

!object /basenamedobjects

dt -b nt!_kevent ******xx

4. 檢視 lasterror 值

!gle

5. 指定進製形式, 0x/0n/0t/0y 分別表示 16/10/8/2 進製

? 0x12345678+0n10

evaluate expression: 305419906 = 12345682

6. 過濾命令視窗輸出資訊

.prompt_allow -reg +dis -ea -src -sym

7. .formats 命令

以多種格式顯示表示式的值

0:000> .formats @eax

evaluate expression:

hex:     00181eb4

decimal: 1580724

octal:   00006017264

binary: 00000000 00011000 00011110 10110100

chars:   ....

time:    mon jan 19 15:05:24 1970

float:   low 2.21507e-039 high 0

double: 7.80981e-318

8. 異常處理相關

有 sx, sxd, sxe, sxi, sxn, sxr 幾條命令可用來設定異常和事件的處理方式。比如:

0:000> sxe ld

可以在載入 dll 時中斷下來。

9. 核心除錯時切換程序

lkd> !process 0 0

lkd> .process ******xx

10. 可在桌面上建立乙個 windbg.exe 的快捷方式,然後在該快捷方式的屬性力設定如下命令列

c:/windbg/windbg.exe -c ".prompt_allow +dis -reg -ea -src -sym; .enable_unicode 1; .enable_long_status 1; .logopen /t c:/dbglog/dbglog.txt"

11. 本機核心除錯

通過 file/kernel debug… 選單可以開啟核心除錯選擇視窗,選擇最後乙個 local 選項頁,確定後可以以核心方式除錯本地機器。這時所有會掛起系統的命令都用不了了,但可以讀寫系統記憶體。另外,有乙個方便的用途是用來檢視系統結構,比如: dt nt!_eprocess 。

12. 其他命令

windbg中常用的命令

~ - list threads in current process context

~* - list detail information of threads in current process context

lm - list all loaded modules

!sym noice/quiet - symbol prompts on/off

.srcpath - set source code path

k - display current stack

~*kb - display current stack for all threads

dv - display current local variable (ctrl + alt + v to switch mode)

.frame - call stack

dt *** - display data structure for *** such as peb

!gle/!error - display last error for current thread.

!teb - diplay current thread execution block

!peb - diplay current process execution block

r [@register] - display value of all register

ln [address] - display the object type in address

x - search address for global variable or global function, such as "x kernel32!*"

!locks - display dead lock

!handle - get current handle usage

!htrace [enable] - display and trace handles.

u - disassemble

bp [kernel!setlasterror] [value] - set break pointer

bl - display break pointer information.

for example:

bp `mysource.cpp:143` "j (poi(myvar)」0n20) ''; 'g' "

when myvar is exceed 0x20, g command will be invoked. note: "j" is to set conditional break pointer.

ba - data break pointer

ba w4 0x4000000 "kb;g" - list all modify 0x40000's call stack.

p,pa,t,ta - control command

WinDbg常用除錯命令

寫在前面的話 除錯當然可以用windbg,樓主發現先用debugdiagnostictool來分析更棒。但是樓主發現1.2版的debugdiag有advanced analysis,但2.0版本又沒有了,非常不解,看來只能用1.2版本。分析前先設定pdb路徑,tools options and se...

WinDbg設定和常用除錯命令

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

Windbg 核心除錯 常用命令

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