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