linux环境内核调试软件,Linux内核调试环境的搭建(使用qemu)

本文介绍在Ubuntu环境下使用makemenuconfig进行内核配置,并通过多线程加速编译的方法。同时,文章还详细讲解了如何利用QEMU结合gdb进行内核的远程调试,包括设置断点及运行内核的具体步骤。
摘要由CSDN通过智能技术生成

但是这里有几个问题要说一下,关于什么是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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值