在qemu虚拟机环境下,使用kgdb调试kernel
2024-01-10 15:48:40
enable kgdb的情况下,使用qemu启动kernel
1,需要先在内核配置中增加kgdb的支持
2,启动qemu虚拟机时,增加参数-s -S,这两个参数会使得kernel在启动之后遇到的第一个指令等待gdb连接
例子:
/qemu-project/qemu/aarch64-softmmu/qemu-system-aarch64 -s -S -machine virt -cpu cortex-a57 -machine type=virt -m 1024 -smp 2 -nographic -kernel arch/arm64/boot/Image -drive format=raw,file=./rootfs_ext4.img -append "noinitrd root=/dev/vda rw console=ttyAMA0 loglevel=8" -fsdev local,id=kmod_dev,path=$PWD/kmodules,security_model=none -device virtio-9p-device,fsdev=kmod_dev,mount_tag=kmod_mount
使用gdb连接kgdb开始调试
1,使用指令aarch64-linux-gnu-gdb vmlinux,开始gdb调试
这里使用的是arm64的gdb版本,而且已经export了其安装路径,如果你们有export则需要指定gdb的绝对路径,同样vmlinux镜像的位置也需要指定。
2,在命令行中,输入target remote:1234 连接到kgdb server开始调试
layout regs
在gdb中输入: layout regs可以把所有的寄存器都显示出来
kernel first instructions
从上面的截图可以看到,此时寄存器PC指向的是0x40000000 这个地址,可以理解为kernel启动的地址为0x40000000
文章来源:https://blog.csdn.net/kill150/article/details/135501729
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!