linux环境内核调试软件,Linux内核调试环境的搭建(使用qemu)
但是這里有幾個(gè)問題要說一下,關(guān)于什么是make menuconfig,不知道的同學(xué)去google下,另外執(zhí)行命令需要ncurses庫的支持,不然你執(zhí)行
make menuconfig會(huì)報(bào)錯(cuò),這里大家可以去官網(wǎng)下:
http://ftp.gnu.org/pub/gnu/ncurses/
版本應(yīng)該問題不大,我選擇的是5.5的版本,因?yàn)槲铱吹剿母氯掌谑?005年,而ubuntu 5.1也是在那個(gè)時(shí)間發(fā)布的,不會(huì)用什么兼容上的問題。
執(zhí)行menuconfig的時(shí)候,我們唯一需要做的工作就是在Kernel hacking項(xiàng)目里面將Compile the kernel with debug info和Compile the kernel with frame pointers,兩項(xiàng)勾選(在相應(yīng)項(xiàng)上按空格鍵,里面都有詳細(xì)的說明,不會(huì)的同學(xué)自己看)。這些項(xiàng)目可以讓編譯時(shí)添加調(diào)試信息,類似我們平時(shí)用的-g選項(xiàng)。
然后make -j4 bzImage,其中-j是讓編譯時(shí)使用多核心,你配置的cpu有幾個(gè)核心就在后面加上幾,比如我的配置的是四核心,那么就是-j4。
等一小會(huì)兒(機(jī)器快的話)之后,內(nèi)核編譯完成,激動(dòng)吧。。。。
那么qemu如何使用呢?
直接終端輸入:
dmee@localhost:~$qemu -s -S -kernle linux-2.6.11.12/arch/i386/boot/bzImage
參數(shù)說明:
-s: qemu在端口1234監(jiān)聽gdb的調(diào)試連接
-S: 讓qemu啟動(dòng)后暫停,等待gdb的連接
-kernel: 指定bzImage的路徑
由于我目前的關(guān)注重點(diǎn)是內(nèi)核初始化的一些過程,所以更高級(jí)的qemu功能先暫時(shí)不去研究,后面用到再說。
之后我們另開啟一個(gè)終端,在源碼的頂層目錄輸入:
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)
之后我們打個(gè)斷點(diǎn)測試下:
(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了!后面關(guān)于一些使用或者調(diào)試的心得,再來跟大家分享!
22/2<12
總結(jié)
以上是生活随笔為你收集整理的linux环境内核调试软件,Linux内核调试环境的搭建(使用qemu)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux服务器延时,Linux 服务器
- 下一篇: 设置linux防火墙服务不开机启动,Li