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