使用QEMU+GDB调试Linux内核

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用QEMU调试Linux内核

一.使用QEMU安装Ubuntu10.04

1.安装qemu

ubuntu下使用sudo apt-get install 安装的qemu版本是0.12.3,该版本中存在bug,使得无法在断点处停下;因此需要在qemu官方网站/Download上下载最新的版本qemu-0.12.5.tar.gz的源代码包自己进行编译安装:

●Sudo apt-get install zlib1g-dev libsdl-dev

●解压源代码后,进入源代码所在目录执行./confingure

●执行make

●执行sudo make install

2.创建QEMU格式的硬盘

qemu-img create –f qcow2name.img size

例如:qemu-img create –f qcow2 ubuntu10.04.img 4GB

3.在创建的硬盘上安装操作系统

qemu–hdaname.img–cdrom ~/Download/ubuntu10.04.iso –boot d 说明:使用hda指定硬盘镜像,使用CDROM选定光驱。-boot d 指从cdrom启动,-boot a是软盘,-boot c 是硬盘;使用qemu或qemu-system-x86_64(64为机子),有时安装系统会很慢,这是可以考虑使用kvm来代替。

例如:kvm–hda ubuntu10.04.img –cdrom ./ubuntu-10.04.iso -boot

d

4.从已经装好操作系统的硬盘启动

qemu–hda ubuntu10.04.img

5.在64位的主机上要使用qemu-system-x86_64命令来代替qemu 二.自己编译内核

现将Linux的编译调节过程简述为:

1. 下载自己要调试的Linux内核的源代码,这个可以从Linux内

核的官方网站上得到:

2. 编译内核最主要的便是配置文件.config,为了能够准确的得到

结果(第一次不要求编译时间),将本机的config文件直接拷

贝到解压后的源代码中。

3.然后进行make操作,结束后将产生的bzImage文件拷到boot

目录下,重启,选择自己编译的内核,这样一般不会出问题,但时间较慢,大约编译一次需要40分钟。

3.1以前编译内核是为调试内核服务的,现在做华为的项目,

发现需要在实际的机器上运行自己编译的内核,参考网站:

/tips/compiling-linux-kernel-26.html

4.为了降低编译时间,就需要对配置文件进行裁剪,在配置文件

中有好多是本机不需要的模块,参考:

/Linux/kernel_options.html。另外调试内

核与模块无关,所以辨识为M的直接可以不选。

5.剪裁的时候采用“逐步瘦身”法,先剪裁掉某个或某几个模块,

然后在进行编译,若没错,在进行模块裁剪,这样可以最大程

度上保证内核配置的正确性。

6.使用qemu调试需要在编译内核的时候将调试信息添加上,

make menuconfig->kernel hacking->kernel debugging->compile

the kernel with debug info。

三.使用qemu+gdb调试Linux内核

(1)qemu–s –S –hda ./ubuntu10.04.img

–kernel ./arch/x86/boot/bzImage–append root=/dev/sda

-s表示运行虚拟机时将1234端口开启成调试端口;

-S表示“冷冻”虚拟机,等待调试器发出继续运行命令;

-kernel表示要调试的内核镜像;

-append root=/dev/sda表示传递给内核的参数。

(2)在另一个终端上运行gdb命令

gdbvmlinux

target remote localhost:1234

若到此没什么问题,你就可以发挥自己的聪明才智进行内核源代码的调试了。

四.GDB基本命令

1.list

/old-gnu/Manuals/gdb-5.1.1/html_node/gdb_46.html

2.GDB command

/TUTORIALS/GDB-Commands.html

相关文档
最新文档