qemu debug linux内核,qemu调试linux内核
2012.03.19
網上時間過早的講編譯內核的文章完全不用看,比如什么講kgdb的,現在這個東西早就被集成到內核里了。還有調試內核的一些允許kernel
debugging的選項,在新版本中也早已是默認選中了。
簡單地說,qemu相當于一個虛擬化的工具。
編譯過linux內核有兩個部分,第一個是vmlinux文件,100多MB的樣子,包含源代碼的符號映射表;還有一個是bzImage,是壓縮過的內核,只有幾MB。
qemu上運行的內容為:內核bzImage +
磁盤鏡像xxx.img。磁盤鏡像可以用busybox制作,但是也可以從qemu官網下載已經制作好的(左邊一欄選testing
qemu,有個文件叫linux-0.2.img),大約8MB。
qemu加這兩個東西,就變成了一個完整的Linux系統
切記用chmod命令修改內核和磁盤鏡像文件的權限,否則可能導致qemu不能正常讀取。為了簡單我直接chmod 777
xxx了(所有用戶所有權限)。
#qemu-system-i386 -S -kernel bzImage -hda linux-0.2.img -append
root=/dev/sda
這就把磁盤鏡像和內核掛載到qemu上了。此時qemu出現黑屏,按ctrl+alt+2進入命令行終端模式。
在qemu命令行中輸入gdbserver,發現開始監聽tcp:1234端口。(1234是qemu默認設置)
新開一個終端,輸入 #gdb vmlinux,開始讀取大內核及符號映射。設置斷點 #br start_kernel
接著開始遠程傳輸指令 #target remote localhost:1234
輸入#c?(continue),開始繼續執行,此時內核會自動執行到start_kernel()函數并暫停。
高版本的C函數庫編譯的程序放在linux-0.2.img中可能會報錯,是由于該文件系統中的C庫過老導致的。編譯時采用靜態編譯即可解決這一問題
總結
以上是生活随笔為你收集整理的qemu debug linux内核,qemu调试linux内核的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle虚拟机 centos6.5,
- 下一篇: linux下java调用python脚本