使用 Bochs 除錯作業系統

2021-07-22 01:09:32 字數 2589 閱讀 1554

sudo ./configure --enable-debugger --enable-disasm

sudo make

sudo make install

啟動帶有除錯的 bochs 之後,我們會看到bochs 會進入乙個選項介面,我們選擇『6.begin simulation』就可以開始除錯了

行為指令

舉例在某實體地址設定斷點

b addr

b 0x7c00

顯示當前所有斷點資訊

info break

info break

繼續執行,直至遇到斷點cc

單步執行ss

單步執行(遇到函式跳過)nn

檢視暫存器資訊

info cpurfp

sreg

creg

info cpurfp

sreg

cre檢視堆疊

print-stack

print-stack

檢視記憶體實體地址內容

xp /nuf addr

xp /40bx 0x9013e

檢視線性位址內容

x /nuf addr

x /40bx 0x13e

反彙編一段記憶體

u start end

u 0x30400 0x3040d

反彙編執行的每一條指令

trace-on

trace-on

每執行一條指令就列印 cpu 資訊

trace-reg

trace-reg

- 我們可以使用 help 來檢視除錯幫助

b 0x7c00

c00000003305i[bios ] $revision: 1.257 $ $date: 2011/01/26 09:52:02 $

……00014041008i[bios ] booting from 0000:7c00

(0) breakpoint 1, 0x00007c00 in ?? ()

next at t=14041069

(0) [0x000000007c00] 0000:7c00 (unk. ctxt): mov ax, cs ; 8cc8

x /64xb 0x7c00

[bochs]:

0x00007c00 : 0x8c 0xc8 0x8e 0xd8 0x8e 0xc0 0xe8 0x02

0x00007c08 : 0x00 0xeb 0xfe 0xb8 0x1e 0x7c 0x89 0xc5

0x00007c10 : 0xb9 0x0d 0x00 0xb8 0x01 0x13 0xbb 0x0c

0x00007c18 : 0x00 0xb2 0x00 0xcd 0x10 0xc3 0x48 0x65

0x00007c20 : 0x6c 0x6c 0x6f 0x2c 0x20 0x77 0x6f 0x72

0x00007c28 : 0x6c 0x64 0x21 0x00 0x00 0x00 0x00 0x00

0x00007c30 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

0x00007c38 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

nnext at t=14041070

(0) [0x000000007c02] 0000:7c02 (unk. ctxt): mov ds, ax ; 8ed8

trace-reg on

register-tracing enabled for cpu0

nnext at t=14041071

eax: 0x00000000 0

ecx: 0x00090000 589824

edx: 0x00000000 0

ebx: 0x00000000 0

esp: 0x0000ffd6 65494

ebp: 0x00000000 0

esi: 0x000e472c 935724

edi: 0x0000ffac 65452

eip: 0x00007c04

eflags 0x00000082: id vip vif ac vm rf nt iopl=0 of df if tf sf zf af pf cf

(0) [0x000000007c04] 0000:7c04 (unk. ctxt): mov es, ax ; 8ec0

c……

《作業系統真象還原》 1 5 執行bochs

終於安裝完成了,雖然這過程中有可能會出現各種各樣的問題,但還是值得慶祝的,對linux不熟的朋友第一次就搞定了這麼個硬貨,我理解您此時的喜大普奔之情,哈哈,給大家點讚。順便說一句,其實平時我們的運維人員為開發環境付出了遠比這更多的努力,所有奮戰在一線的系統工程師和運維工程師,您們辛苦了。不過好奇心讓...

使用Virtualbox除錯自製作業系統

自製作業系統,如果每次都用物理機除錯,未免太慢了,30天自製作業系統 裡使用的pc模擬器qemu軟體,但是實際上,使用虛擬機器是乙個很不錯的選擇,功能強大,除錯方便。以下實現乙個簡單的hello world用例,來自 30天自製作業系統 hello os tab 4 org 0x7c00 指明程式裝...

作業系統原理與實現 Bochs與GDB

二 gdb bochs是乙個x86硬體平台的開源模擬器。它可以模擬各種硬體的配置。bochs模擬的是整個pc平台,包括i o裝置 記憶體和bios。更為有趣的是,甚至可以不使用pc硬體來執行bochs。事實上,它可以在任何編譯執行bochs的平台上模擬x86硬體。通過改變配置,可以指定使用的cpu ...