調(diào)試環(huán)境的搭建(三)-創(chuàng)新互聯(lián)

    上節(jié)博客中我們寫了一個(gè)主引導(dǎo)程序,運(yùn)行的還算完美,已經(jīng)正確的實(shí)現(xiàn)了我們想要的功能。那么問題來了,它只是顯示一個(gè)字符串,如果在字符串沒有顯示出來程序就掛掉了,那么我們此時(shí)應(yīng)如何去查證?換句話說,如何調(diào)試主引導(dǎo)區(qū)的代碼?今天我們便來介紹下另一款優(yōu)秀的虛擬機(jī)軟件(Bochs)。

成都創(chuàng)新互聯(lián)公司不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對(duì)營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級(jí),滿足企業(yè)一站式成都全網(wǎng)營銷需求,讓再小的成都品牌網(wǎng)站建設(shè)也能產(chǎn)生價(jià)值!

        先來看看 Bochs 的一些特點(diǎn):1、專業(yè)模擬 x86 架構(gòu)的虛擬機(jī);2、它是開源并且可移植度較高,源碼是由 C++ 編寫的;3、支持操作系統(tǒng)開發(fā)過程中的斷點(diǎn)調(diào)試;4、通過簡(jiǎn)單的配置就能夠運(yùn)行于絕大多數(shù)主流的操作系統(tǒng)。

        那么支持調(diào)試功能的 Bochs 版本怎樣進(jìn)行配置呢?步驟如下

        1、下載源碼:https://sourceforge.net/projects/bochs/files/


        2、解壓縮 bochs-2.x.x.tar.gz 得到 bochs-2.x.x 文件夾

        3、進(jìn)入源碼目錄:cd bochs-2.x.x

        4、進(jìn)行配置:./configure --enable-debugger --enable-disasm

        5、make

        6、make install

        經(jīng)過以上六步就完成了 Bochs 的環(huán)境搭建了,值得注意的是博主在搭建過程中出現(xiàn)了一個(gè)錯(cuò)誤,在第五步 make 的時(shí)候出現(xiàn)了:/usr/bin/ld: gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbo 的錯(cuò)誤以導(dǎo)致不能繼續(xù)執(zhí)行下去,經(jīng)過搜查資料,解決辦法是在 bochs-2.x.x 文件夾里的 Makefile,在92行左右找到 LIBS =。。。,在這一行最后面添加 -lpthread 就 ok 了。注:修改完成之后不能重新configure,不然添加的-lpthread會(huì)消失,添加后直接make就可以了。

        在搭建好環(huán)境之后我們便需要來配置一個(gè)啟動(dòng)文件 bochsrc.txt ,文件內(nèi)容如下

調(diào)試環(huán)境的搭建(三)


       關(guān)于上面啟動(dòng)文件的中的幾個(gè)路徑確定方法如下:1、確定 bochs 的安裝路徑:which bochs;2、安裝 vgabios,確定的它的路徑:whereis vgabios。

        下來我們來看看啟動(dòng) bochs 虛擬機(jī)的方法,分為兩種:顯示啟動(dòng)和隱式啟動(dòng)。

        a> 顯示啟動(dòng):bochs -f bochsrc_file;

        b> 隱式啟動(dòng):bochs

       調(diào)試環(huán)境的搭建(三)

        那么如何來驗(yàn)證調(diào)試環(huán)境呢?我們啟動(dòng) bochs 后按 6 來模擬啟動(dòng),然后輸入 continue,如果出現(xiàn)的模擬終端顯示出我們所要打印的字符串,那便算是我們已經(jīng)成功安裝 bochs 虛擬機(jī)了。下來看看最后的效果圖

調(diào)試環(huán)境的搭建(三)

        我們?cè)谳斎?bochs 隱式啟動(dòng)方式后,然后再輸入 6 來進(jìn)行模擬啟動(dòng)終端,效果如下

調(diào)試環(huán)境的搭建(三)

        我們看到在輸入 continue 后終端成功的出現(xiàn)我們自己的輸出的字符串,證明此時(shí)我們的 bochs 環(huán)境已經(jīng)搭建成功了。那么我們?nèi)绾蝸磉M(jìn)行 bochs 的調(diào)試(類似與 Linux 中的 GDB 調(diào)試)呢? bochs 常用的一些調(diào)試命令如下

調(diào)試環(huán)境的搭建(三)

        我們來嘗試下設(shè)置斷點(diǎn),如下

調(diào)試環(huán)境的搭建(三)

        我們看到在設(shè)置斷點(diǎn) 0x7c00 之后,info 看下斷點(diǎn)信息,確實(shí)是在 0x7c00 處打了個(gè)斷點(diǎn)。繼續(xù) continue 執(zhí)行,發(fā)現(xiàn)這時(shí)的虛擬機(jī) bochs 已經(jīng)上電成功。我們看到接下來它要執(zhí)行的是 mov ax, cs 這條指令,是不是我們當(dāng)時(shí)所寫的 start 的第一條指令呢?確實(shí)是的,那么它后面的 8cc8 是什么意思呢?它指的是這條指令所對(duì)應(yīng)地址的數(shù)據(jù),下來我們繼續(xù)執(zhí)行 continue,看看最后效果

調(diào)試環(huán)境的搭建(三)

        我們看到已經(jīng)成功執(zhí)行了我們自己編寫的主引導(dǎo)程序。下來我們執(zhí)行下單步調(diào)試,看看結(jié)果

調(diào)試環(huán)境的搭建(三)

        我們看到 step 單步調(diào)試執(zhí)行的結(jié)果和我們之前所編寫的主引導(dǎo)程序的代碼是一樣的。通過今天對(duì)調(diào)試環(huán)境 bochs 的搭建,總結(jié)如下:1、bochs 是一款專業(yè)模擬 x86 架構(gòu)的虛擬機(jī);2、從源碼安裝 bochs 可以獲得調(diào)試功能的支持;3、bochs 的啟動(dòng)配置文件是正確運(yùn)行關(guān)鍵;4、bochs 支持?jǐn)帱c(diǎn)調(diào)試,其調(diào)試命令與 GDB 調(diào)試類似。


另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前名稱:調(diào)試環(huán)境的搭建(三)-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://muchs.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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)