【從頭開始寫作業系統系列】使用 Bochs 調試作業系統

來源:互聯網
上載者:User

標籤:作業系統   自製作業系統   bochs   調試   

在上一篇文章《環境搭建以及第一個Hello-World》中,筆者講了如何安裝 bochs 以及運行一個 helloworld 作業系統,但是使用上一篇文章中的方法安裝的 bochs 是不支援調試的,下面我講介紹如何使用源碼編譯的方法來安裝 bochs,以及使用 bochs 來調試作業系統。

編譯安裝 Bochs
  • 下載 bochs 源碼

http://sourceforge.net/projects/bochs/files/bochs/2.6.8/

  • 解壓之後進入該目錄,進行配置

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

  • 編譯安裝

sudo make

sudo make install

這時,bochs 就編譯安裝完成了,接下來我們繼續使用上一篇文章中所使用的磁碟片映像。

用 Bochs 調試作業系統

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

部分 Bochs 調試指令
行為 指令 舉例
在某物理地址設定斷點 b addr b 0x7c00
顯示當前所有斷點資訊 info break info break
繼續執行,直至遇到斷點 c c
逐步執行 s s
逐步執行(遇到函數跳過) n n
查看寄存器資訊 info cpu
r
fp
sreg
creg
info cpu
r
fp
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 來查看調試協助

舉例

採用上一篇文章中的鏡像來進行調試

<bochs:1> b 0x7c00<bochs:2> 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<bochs:4> x /64xb 0x7c00[bochs]:0x00007c00 <bogus+       0>:    0x8c    0xc8    0x8e    0xd8    0x8e    0xc0    0xe8    0x020x00007c08 <bogus+       8>:    0x00    0xeb    0xfe    0xb8    0x1e    0x7c    0x89    0xc50x00007c10 <bogus+      16>:    0xb9    0x0d    0x00    0xb8    0x01    0x13    0xbb    0x0c0x00007c18 <bogus+      24>:    0x00    0xb2    0x00    0xcd    0x10    0xc3    0x48    0x650x00007c20 <bogus+      32>:    0x6c    0x6c    0x6f    0x2c    0x20    0x77    0x6f    0x720x00007c28 <bogus+      40>:    0x6c    0x64    0x21    0x00    0x00    0x00    0x00    0x000x00007c30 <bogus+      48>:    0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x000x00007c38 <bogus+      56>:    0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00<bochs:5> nNext at t=14041070(0) [0x000000007c02] 0000:7c02 (unk. ctxt): mov ds, ax                ; 8ed8<bochs:6> trace-reg onRegister-Tracing enabled for CPU0<bochs:7> nNext at t=14041071eax: 0x00000000 0ecx: 0x00090000 589824edx: 0x00000000 0ebx: 0x00000000 0esp: 0x0000ffd6 65494ebp: 0x00000000 0esi: 0x000e472c 935724edi: 0x0000ffac 65452eip: 0x00007c04eflags 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<bochs:8> c……

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

文章來源:http://blog.luoyuanhang.com

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。(文章來源:http://blog.luoyuanhang.com)

【從頭開始寫作業系統系列】使用 Bochs 調試作業系統

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.