上節(jié)博客中我們寫了一個主引導程序,運行的還算完美,已經(jīng)正確的實現(xiàn)了我們想要的功能。那么問題來了,它只是顯示一個字符串,如果在字符串沒有顯示出來程序就掛掉了,那么我們此時應如何去查證?換句話說,如何調(diào)試主引導區(qū)的代碼?今天我們便來介紹下另一款優(yōu)秀的虛擬機軟件(Bochs)。
先來看看 Bochs 的一些特點:1、專業(yè)模擬 x86 架構(gòu)的虛擬機;2、它是開源并且可移植度較高,源碼是由 C++ 編寫的;3、支持操作系統(tǒng)開發(fā)過程中的斷點調(diào)試;4、通過簡單的配置就能夠運行于絕大多數(shù)主流的操作系統(tǒng)。
那么支持調(diào)試功能的 Bochs 版本怎樣進行配置呢?步驟如下
1、下載源碼:https://sourceforge.net/projects/bochs/files/
2、解壓縮 bochs-2.x.x.tar.gz 得到 bochs-2.x.x 文件夾
3、進入源碼目錄:cd bochs-2.x.x
4、進行配置:./configure --enable-debugger --enable-disasm
5、make
6、make install
經(jīng)過以上六步就完成了 Bochs 的環(huán)境搭建了,值得注意的是博主在搭建過程中出現(xiàn)了一個錯誤,在第五步 make 的時候出現(xiàn)了:/usr/bin/ld: gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbo 的錯誤以導致不能繼續(xù)執(zhí)行下去,經(jīng)過搜查資料,解決辦法是在 bochs-2.x.x 文件夾里的 Makefile,在92行左右找到 LIBS =。。。,在這一行最后面添加 -lpthread 就 ok 了。注:修改完成之后不能重新configure,不然添加的-lpthread會消失,添加后直接make就可以了。
在搭建好環(huán)境之后我們便需要來配置一個啟動文件 bochsrc.txt ,文件內(nèi)容如下
關(guān)于上面啟動文件的中的幾個路徑確定方法如下:1、確定 bochs 的安裝路徑:which bochs;2、安裝 vgabios,確定的它的路徑:whereis vgabios。
下來我們來看看啟動 bochs 虛擬機的方法,分為兩種:顯示啟動和隱式啟動。
a> 顯示啟動:bochs -f bochsrc_file;
b> 隱式啟動:bochs
那么如何來驗證調(diào)試環(huán)境呢?我們啟動 bochs 后按 6 來模擬啟動,然后輸入 continue,如果出現(xiàn)的模擬終端顯示出我們所要打印的字符串,那便算是我們已經(jīng)成功安裝 bochs 虛擬機了。下來看看最后的效果圖
我們在輸入 bochs 隱式啟動方式后,然后再輸入 6 來進行模擬啟動終端,效果如下
我們看到在輸入 continue 后終端成功的出現(xiàn)我們自己的輸出的字符串,證明此時我們的 bochs 環(huán)境已經(jīng)搭建成功了。那么我們?nèi)绾蝸磉M行 bochs 的調(diào)試(類似與 Linux 中的 GDB 調(diào)試)呢? bochs 常用的一些調(diào)試命令如下
我們來嘗試下設(shè)置斷點,如下
我們看到在設(shè)置斷點 0x7c00 之后,info 看下斷點信息,確實是在 0x7c00 處打了個斷點。繼續(xù) continue 執(zhí)行,發(fā)現(xiàn)這時的虛擬機 bochs 已經(jīng)上電成功。我們看到接下來它要執(zhí)行的是 mov ax, cs 這條指令,是不是我們當時所寫的 start 的第一條指令呢?確實是的,那么它后面的 8cc8 是什么意思呢?它指的是這條指令所對應地址的數(shù)據(jù),下來我們繼續(xù)執(zhí)行 continue,看看最后效果
我們看到已經(jīng)成功執(zhí)行了我們自己編寫的主引導程序。下來我們執(zhí)行下單步調(diào)試,看看結(jié)果
我們看到 step 單步調(diào)試執(zhí)行的結(jié)果和我們之前所編寫的主引導程序的代碼是一樣的。通過今天對調(diào)試環(huán)境 bochs 的搭建,總結(jié)如下:1、bochs 是一款專業(yè)模擬 x86 架構(gòu)的虛擬機;2、從源碼安裝 bochs 可以獲得調(diào)試功能的支持;3、bochs 的啟動配置文件是正確運行關(guān)鍵;4、bochs 支持斷點調(diào)試,其調(diào)試命令與 GDB 調(diào)試類似。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前名稱:調(diào)試環(huán)境的搭建(三)-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://www.rwnh.cn/article22/djhdcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、品牌網(wǎng)站制作、企業(yè)建站、網(wǎng)站制作、品牌網(wǎng)站建設(shè)、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)