Bochs调试Linux内核 - 定位内核中的变量或数据结构
到此網址下載,
http://oldlinux.org/Linux.old/bochs/linux-0.12-080324.zip
解壓以后如下;?
第一個文件是Bochs安裝文件;安裝之;安裝之后如下圖;同時在下圖目錄新建0.11目錄;
把下載的如下內容拷貝過來; .bxrc, 這是bochs配置文件;
bochs配置文件包含如下兩行,
? ??floppya: 1_44="bootimage-0.12-hd", status=inserted
? ? floppyb: 1_44="diskb.img", status=inserted
這是指定軟驅A插入載有0.12版本的內核鏡像的軟盤; diskb.img,這里面可能是一些工具;
然后在此目錄建立一個run.bat;內容如下圖;
?安裝目錄根據自己的更改;運行此bat;如果寫錯?bochsrc-0.12-hd.bxrc ,則可能出現類似下圖錯誤;
運行以后,正常就進到 <bochs:1> 停止;0.12版本內核已裝載;可以輸入調試命令;
先在7c00設一個斷點,然后下一行再輸入 c ,執行到斷點;
執行到斷點如下圖;這里是一條 mov ax, 0x07c0 指令;根據資料,這條指令是一些操作系統開始引導的起點;
參照,https://blog.csdn.net/bcbobo21cn/article/details/105314444
然后看一下;此目錄下還有SYSTEM.MAP文件;里面是內核的函數和變量的地址;這是編譯內核時產生的;是別人做的,我不會做;
利用此文件可以在調試時快速定位到感興趣的變量或函數;
假設要定位到buffer_init函數,地址0xf488;
輸入lb 0xf488;在此地址設一個斷點;lb = lbreak;? ? l,應該是line的意思;線性地址;
然后輸入 c 繼續執行;但是就掛了;如下圖;前頭相關的內容還沒看,可能還有些配置沒弄完;
再試另外的地址也是掛掉;
主要參考的?Linux內核完全剖析 - 基于0.12內核 一書;還有,
? ??bochs調試linux 0.11內核_envy2008的專欄-CSDN博客
總結
以上是生活随笔為你收集整理的Bochs调试Linux内核 - 定位内核中的变量或数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GIS坡度分析入门实例 - 使用Supe
- 下一篇: Bochs调试Linux内核初步学习 -