Linux内核调试环境的搭建(使用qemu)

发表于:2013-3-29 10:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:dingyujie    来源:51Testing软件测试网采编

  但是这里有几个问题要说一下,关于什么是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
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号