在學習《linux核心完全注釋》時,為了方便,直接使用了趙博提供的linux-0.11-devel-040923.zip來debug,幫助理解**。
後來又在哈工大的**上發現了他們作業系統課程的實驗,同樣是關於linux 0.11版本的。
後來在使用的過程中,我發現趙博使用的是bochs 2.1.1,而哈工大的oslab使用的是bochs 2.3.7版本。兩者的debug指令有幾個差別:
操作2.1.1
2.3.7
顯示通用暫存器狀態
info r
r顯示cpu狀態
info cpu
dump_cpu
檢視段選擇符狀態
sreg
dump_cpu
檢視控制暫存器狀態
creg
dump_cpu
除了最新版本增加了幾個debug指令外,其他都相同。
這裡再列舉出幾個重要的debug指令:
操作指令
舉例連續執行
c單步執行
s [count]
s 10
列印棧print-stack [num words]
print-stack 10
檢視資料段內容
x /[nuf] [addr]
x /4x ds:0x1918a
在實體地址上設定斷點
b [addr]
b 0x641c
在虛擬位址上設定斷點
vb [seg:addr]
vb 0x0000:0x7c00
檢視斷點
info b
info b
刪除斷點
delete [n]
delete 1
檢視從當前指令開始的給定行數的反彙編
u /[n]
u /100
對給定的線性位址範圍內的指令進行反彙編
u [start] [end]
u 0x7410 0x7450
更詳細的指令說明請參考bochs的debugger指令說明
一 bochs虛擬機器配置
配置資訊 boot floppy 軟盤啟動 floppy type 1 44,1 44 boot.img status inserted,write protected 0 軟盤容量1.44m,映象檔案名boot.img,狀態為已被裝入,寫保護關閉。megs 2048 設定虛擬平台空間可用物理記憶體...
虛擬機器 指令寫出
是的,還有幾個節點的指令生成沒有測試呢,包括流控制語句,io.不過呢,流控制是相對比較容易優化的,進行 生成指令再對比 的測試不太好維護,而 io 指令很簡單 所以要不這樣,把指令寫出來,然後開個虛擬機器執行,如果執行沒問題就算測試通過了.一些常見的語義錯誤處理在之前的之前的內容中都以注釋形式出現,...
虛擬機器指令 shell的使用
在linux學習者初步使用和學習linux的時候,會發現我們對這套作業系統是比較陌生的。而我們想要玩轉linux,那麼就不得不執行一些具有威脅性質的指令,可能會更改系統檔案,在此過程中,稍有不慎就可能會導致系統無法使用甚至癱瘓。因此保險起見,我們在最初的階段,將使用虛擬機器來幫助我們先去了解linu...