linux环境内核调试软件,Linux内核调试环境的搭建(使用qemu)
但是這里有幾個問題要說一下,關于什么是make menuconfig,不知道的同學去google下,另外執行命令需要ncurses庫的支持,不然你執行
make menuconfig會報錯,這里大家可以去官網下:
http://ftp.gnu.org/pub/gnu/ncurses/
版本應該問題不大,我選擇的是5.5的版本,因為我看到它的更新日期是2005年,而ubuntu 5.1也是在那個時間發布的,不會用什么兼容上的問題。
執行menuconfig的時候,我們唯一需要做的工作就是在Kernel hacking項目里面將Compile the kernel with debug info和Compile the kernel with frame pointers,兩項勾選(在相應項上按空格鍵,里面都有詳細的說明,不會的同學自己看)。這些項目可以讓編譯時添加調試信息,類似我們平時用的-g選項。
然后make -j4 bzImage,其中-j是讓編譯時使用多核心,你配置的cpu有幾個核心就在后面加上幾,比如我的配置的是四核心,那么就是-j4。
等一小會兒(機器快的話)之后,內核編譯完成,激動吧。。。。
那么qemu如何使用呢?
直接終端輸入:
dmee@localhost:~$qemu -s -S -kernle linux-2.6.11.12/arch/i386/boot/bzImage
參數說明:
-s: qemu在端口1234監聽gdb的調試連接
-S: 讓qemu啟動后暫停,等待gdb的連接
-kernel: 指定bzImage的路徑
由于我目前的關注重點是內核初始化的一些過程,所以更高級的qemu功能先暫時不去研究,后面用到再說。
之后我們另開啟一個終端,在源碼的頂層目錄輸入:
dmee@localhost:~/linux-2.6.11.12$ gdb vmlinux
然后,輸入命令:
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
[New Thread 1]
0x0000fff0 in ?? ()
warning: shared library handler failed to enable breakpoint
(gdb)
之后我們打個斷點測試下:
(gdb) b start_kernel
Breakpoint 1 at 0xc030e537: file init/main.c, line 417.
(gdb) c
Continuing.
Breakpoint 1, start_kernel () at init/main.c:417
417???? {
(gdb) n
425????????? page_address_init();
(gdb)
ok了!后面關于一些使用或者調試的心得,再來跟大家分享!
22/2<12
總結
以上是生活随笔為你收集整理的linux环境内核调试软件,Linux内核调试环境的搭建(使用qemu)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux服务器延时,Linux 服务器
- 下一篇: 设置linux防火墙服务不开机启动,Li