1. 程式人生 > >Bochs除錯指令

Bochs除錯指令

1、指令斷點

1.1、設定斷點

1.1.1、設定在實體地址

b/break addr

1.1.2、設定線上性地址

lb/lbreak addr

1.1.3、設定在虛擬地址

vb/vbreak seg:off  seg是段選擇子,off是段內偏移。

1.2、禁用/啟用斷點

bpd|bpe bn  禁用/啟用斷點,相當於WinDBG的“be”和“bd”。bn是斷點號,可以用blist命令查詢。

1.3、刪除斷點

d/del bn  bn是斷點號,可以用blist命令查詢。

1.4、顯示現有斷點(斷點號和地址)

blist/info b/info break

2、讀寫斷點

2.1、設定讀寫斷點

watch read addr

watch write addr

2.2、刪除讀寫斷點

unwatch read addr

unwatch write addr

unwatch  刪除所有現有的讀寫斷點

2.3、顯示現有讀寫斷點

watch

3、執行控制

3.1、單步執行(遇到call和int進入函式、中斷內)

s/step [count]  單步執行count條指令,count 預設為 1。相當於WinDBG的“t”。

3.2、單步執行(遇到call和int不進入函式、中斷內)

p/n/next  相當於WinDBG的“p”。

3.3、繼續執行,直到遇到斷點

c/cont  相當於WinDBG的“g”。

4、檢視暫存器

4.1、檢視通用暫存器

r/info r/info reg

4.2、檢視段暫存器和段描述符暫存器

sreg

info gdt  檢視全域性描述符表的資訊

info idt  檢視中斷描述符表的資訊

info ldt  檢視區域性描述符表的資訊

info tss  檢視任務狀態段的資訊

4.3、檢視控制暫存器

creg

5、檢視記憶體

5.1、通過實體地址檢視

xp [/nuf] addr

其中n指定顯示的單元數,預設是1;
u 指定每個顯示單元的大小(b表示位元組、h表示字(2位元組)、w表示雙字(4位元組)),預設是w;
f 指定顯示格式(x 十六進位制、d 有符號十進位制、u 無符號十進位制、o 八進位制、t 二進位制、c 字元),預設是x

5.2、通過線性地址檢視

x [/nuf] addr  nuf的意義同上

5.3、檢視堆疊

print-stack

5.4、反編譯

u/disas/disassemble [/n] [start] [end]

n是反編譯的指令的數目,預設是1;start是開始反彙編的地址,預設是當前指令指標所指的地址;end是結束反彙編的地址

6、停止除錯並退出

q/quit/exit