virtualbox调试linux内核,virtualbox+kgdbt调试linux内核
參考http://blog.csdn.net/zr_lang/article/details/8107015
環(huán)境需求:
兩臺linux虛擬機(jī),我這里用的virtualbox安裝的ubuntu12.04系統(tǒng),內(nèi)核版本3.2
其中1臺虛擬機(jī)作為開發(fā)機(jī)virtualpc,另一臺則作為被調(diào)試機(jī)target
過程:
由于不會對下載來的內(nèi)核源碼進(jìn)行準(zhǔn)確的編譯配置,一般下載的源碼編譯安裝后無法引導(dǎo),提示缺少相關(guān)模塊,這就是由于模塊配置的原因無法進(jìn)入新裝內(nèi)核系統(tǒng),而不同版本之間的配置文件又無法通用
不過在查看原系統(tǒng)配置文件的時候發(fā)現(xiàn)這個直接安裝的系統(tǒng)居然已經(jīng)配置了所需的KGDB選項(雖然不知道一般的發(fā)行版為什么會默認(rèn)配置這個.....)
這樣就好辦了根本不需要重新編譯安裝新內(nèi)核,只要在當(dāng)前可用內(nèi)核中添加kgdb啟動參數(shù)就能等待調(diào)試了,于是在target中sudo apt-get install linux-image-3.2.0-51-generic-pae,在grub.cfg中copy出一個新的3.2.51內(nèi)核的啟動項,然后在啟動參數(shù)后添加kgdboc=ttyS0,115200 kgdbwait。
然后在www.kernel.org下載了3.2.0-51版本的內(nèi)核,make bzImage后獲得調(diào)試需要的vmlinux內(nèi)核文件。
同時設(shè)置啟用兩臺虛擬機(jī)的串口COM1,端口模式為主機(jī)管道,輸入相同的管道文件路徑,并在virtualpc中勾選創(chuàng)建通道。
首先啟動virtualpc開發(fā)機(jī),將下載編譯了的內(nèi)核源代碼復(fù)制或共享到開發(fā)機(jī)中,啟動target調(diào)試機(jī)選擇新的kgdb調(diào)試選單,會出現(xiàn)等待遠(yuǎn)程調(diào)試連接的提示,這時候就能使用我們的gdb來調(diào)試內(nèi)核了,gdb的簡單UI版gdbtui或者cgdb也可以使用,調(diào)試起來更加直觀。這里使用了cgdb,首先:
cd到源碼根目錄
cgdb? vmlinux
set remotebaud 115200
target remote /dev/ttyS0
之后就會出現(xiàn)內(nèi)核源碼并能夠開始真正的調(diào)試工作,同時可以觀察target的變化。
經(jīng)測試上面鏈接中的用主機(jī)gdb在set remotebaud 115200后用target remote |?socat ?stdio ?unix-connect:/tmp/vbox來連接管道調(diào)試虛擬機(jī)可行。看來主機(jī)調(diào)試虛擬機(jī)是完全沒問題地!~
貼上調(diào)試效果:
總結(jié)
以上是生活随笔為你收集整理的virtualbox调试linux内核,virtualbox+kgdbt调试linux内核的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 非登录shell自动,Lin
- 下一篇: linux去重文件第一列,科学网—Lin