采用大杀招QEMU调试Linux内核代码

Linux调试内核代码是非常麻烦。它们一般加printk, 或者使用JTAG调试。

这里的方法是使用QEMU为了调试Linux核心。

由于QEMU自己实现gdb server, 它可以容易地使用gdb要调整内核。

也很有帮助。

为了尽量不多花时间在QEMU设置上,这里直接使用下面的内核image:

http://free-electrons.com/community/demos/qemu-arm-directfb/

1. QEMU的安装

 这个能够自己去QEMU的官网下载编译,假设自己手头上的发行版有相应QEMU的包的话那也能够直接安装。

 CentOS的话參考前面的 CentOS rpm 额外包的源

2. 下载相应的内核映像

 从下面网址下载:http://free-electrons.com/pub/qemu/demos/arm/directfb/1.0/ 这里面有一个vmlinuz-qemu-arm-2.6.20

3. 启动QEMU

 使用例如以下命令启动:

 $ qemu-system-arm -M versatilepb -m 16 -kernel vmlinuz-qemu-arm-2.6.20 -append "clocksource=pit quiet rw" -S -s

4. 调试内核

 这里须要有一个包括调试信息的vmlinux文件。能够直接编译http://free-electrons.com/pub/qemu/demos/arm/directfb/1.0/src/linux-2.6.20.tar.7z

 假设自己不想编译的话能够使用一个已编译好的vmlinux文件:http://pan.baidu.com/s/1sjuJYc1

 然后运行例如以下命令:

 $ arm-none-linux-gnueabi-gdb vmlinux

 在gdb在控制台输入:

 (gdb) target remote :1234

 (gdb) b start_kernel

 (gdb) c

 这一次,程序运行它会落在你设置断点start_kernel办公室。OK。所以,你可以调试内核任意代码!

时间: 2024-10-10 00:49:18

采用大杀招QEMU调试Linux内核代码的相关文章

大杀招之使用QEMU调试Linux内核代码

Linux内核代码的调试非常麻烦,一般都是加printk, 或者用JTAG调试. 这里的方法是用QEMU来调试Linux内核.因为QEMU自己实现了一个gdb server, 所以可以非常方便的使用gdb来调内核. 这对内核的学习也非常有帮助. 为了尽量不多花时间在QEMU设置上,这里直接使用以下的内核image: http://free-electrons.com/community/demos/qemu-arm-directfb/ 1. QEMU的安装 这个可以自己去QEMU的官网下载编译,

使用QEMU调试Linux内核代码

Linux内核代码的调试非常麻烦,一般都是加printk, 或者用JTAG调试.这里的方法是用QEMU来调试Linux内核.因为QEMU自己实现了一个gdb server, 所以可以非常方便的使用gdb来调内核. 这对内核的学习也非常有帮助. 为了尽量不多花时间在QEMU设置上,这里直接使用以下的内核image: http://free-electrons.com/community/demos/qemu-arm-directfb/ 1,QEMU的安装 这个可以自己去QEMU的官网下载编译,如果

用qemu调试linux内核

1)dd if=/dev/zero of=./busybox.img bs=1M count=642)mkfs.ext3 busybox.img3)下载busybox,http://www.busybox.net/downloads/#tar jxvf busybox-1.18.0.tar.bz2 (解压busybox压缩包)#cd busybox-1.18.0 (进入到解压后的busybox源码目录)#make menuconfig (配置busybox)注意配置时,一定要选择静态链接选项,该

ubuntu14使用qemu调试linux内核

# 下载内核源代码编译内核 cd ~/LinuxKernel/ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.xz xz -d linux-3.18.6.tar.xz tar -xvf linux-3.18.6.tar cd linux-3.18.6 make i386_defconfig make # 一般要编译很长时间,少则20分钟多则数小时 # 制作根文件系统 cd ~/LinuxKernel/ mkd

调试linux内核环境搭建方法(ddd+busybox+qemu+linux3.5.4内核)

环境搭建 1.1.准备工作 (1).qemu虚拟机 (2).busybox软件 (3).linux-3.5.4内核 (4).ddd 调试工具(终端中输入 sudo apt-get install ddd 安装) 1.2.编译内核 (1)建立工作目录:mkdir -p ~/work/qemu (2)切换到此目录:cd ~/work/qemu (3)下载 linux内 核 (4)解压内核:tar -jxvf linux-3.5.4.tar.bz2 (5)切换到linux-3.5.4目录: cd li

调试Linux内核环境MenuOS系统

调试Linux内核环境MenuOS系统 一.实验简介 本文采用自己搭建环境的方式对gdb进行了模拟. (1)工具介绍 1)QEMU介绍 QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作.通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB等设备进

用KGdb和VMware调试Linux内核,System Call

Linux的内核和System Call不好调试,参考这里: http://stackoverflow.com/questions/5999205/cannot-step-into-system-call-source-code 简单来说,如果想在本机调试system call,那么当你进入system call时,系统已经在挂起状态了,那么它又怎样能响应用户的输入? 所以,有一个UML(http://user-mode-linux.sourceforge.net/)的方式,把内核当成一个进程启

【转】TI-Davinci开发系列之六CCS5.2调试Linux内核

上转博文<TI-Davinci开发系列之五CCS5.2使用gdbserver远程调试应用程序> 使用CCS5.2远程调试内核时,只需导入Linux内核源码,而不需要编译内核,也就不会用到交叉编译链,同时不需要使用gdbserver,但需要仿真器XDS560V2,所以Windows和Linux都可以完成,但考虑到Windows CCS5.2软件成熟,bug较少,且Windows易于操作,故本文推荐并主要介绍Windows版CCS5.2调试内核的方法.在介绍远程调试Linux之前,务必保证仿真器X

VELT-0.1.5开发:使用kgdb调试Linux内核

VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可以进行uboot和linux内核的编译,并根据编译时的错误信息正确定位到源码.目前的版本是0.1.4,仅支持vs2013.此插件可以在CSDN下载频道下载(http://download.csdn.net/detail/lights