我是靠谱客的博主 霸气黄蜂,最近开发中收集的这篇文章主要介绍在qemu虚拟环境下gdb调试kernel,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在qemu虚拟环境下gdb调试kernel
根据这篇文章搭建基本的开发环境:
Qemu搭建arm-vexpress虚拟开发环境

再配置kernel
把做好的rootfs复制到kernel目录下,指定Initramfs source.

   General setup  --->
		 [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support            
		(rootfs) Initramfs source file(s)
Kernel Features  --->
	Memory split (3G/1G user/kernel split)  --->

编译kernel

Make bzImage
Make dtbs

结果

arch/arm/boot/zImage
arch/arm/boot/dts/vexpress-v2p-ca9.dtb
vmlinux

把编译出来的这些文件都拷贝到自定义out目录里
使用以下命令启动kernel
为了方便写入脚本

sudo qemu-system-arm 
        -M vexpress-a9 
        -m 1024M 
        -kernel out/zImage 
        -dtb out/vexpress-v2p-ca9.dtb 
        -nographic 
        -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" 
        -S 
        -s

-S:表示qemu虚拟机冻结cpu,直到gdb输入相应控制命令
-s:表示在1234端口接受gdb调试连接
以上命令执行后,会出现以下信息并暂停等待gdb连接。
在这里插入图片描述
然后再打开一个终端,找到刚才vmlinux的目录,使用gdb命令
arm-none-linux-gnueabihf-gdb --tui vmlinux
出现下图所示
在这里插入图片描述
输入命令连接qemu
target remote :1234
b start_kernel(在函数打断点)
c(单步调试)
在这里插入图片描述
也可以不用-S和-s命令,在内核中加入打印调试信息,启动内核直接能看到,也很方便调试,比每次都烧写开发板方便太多了。

最后

以上就是霸气黄蜂为你收集整理的在qemu虚拟环境下gdb调试kernel的全部内容,希望文章能够帮你解决在qemu虚拟环境下gdb调试kernel所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部