gdb 调试kvm虚拟机_GDB+QEMU调试内核模块(实践篇)

本文介绍了如何使用GDB和QEMU来调试Linux内核模块。首先,通过QEMU启动虚拟机并配置相关参数,然后在虚拟机中编译所需的kernel headers和模块。接着,加载内核模块并获取其加载地址。在主机上,配置GDB以连接到虚拟机的调试端口,并加载内核及模块符号。最后,通过设置断点进行调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调试内核模块的方法有很多。最常用的,可能也是上手难度最低的就是使用prinfk打印出相关的调试信息,但是总给人的感觉不够geeek,所以这里描述一种能够使用gdb+qemu来调试内核的方法。

启动虚拟机

/data/bin/qemu-system-x86_64 -m 6144 -M accel=kvm -cpu host -smp 4 -nographic \

-kernel /root/code/linux-4.18.2/arch/x86/boot/bzImage \

-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk1,id=virtio-disk0,disable-modern=off,disable-legacy=on \

-drive format=raw,if=none,id=drive-virtio-disk1,cache=directsync,file=/data/rootfs.img,aio=native \

-netdev tap,id=tap0,ifname=virbr0-nic,vhost=no,script=no \

-device virtio-net-pci,netdev=tap0 \

-append "root=/dev/vda rw console=ttyS0 nokaslr" -enable-kvm -S -gdb tcp::8889

当进入到虚拟机之后,启动相关的网卡,可以方便的向虚拟机中拷贝相关需要的文件,方便调试。

内核模块实例

使用以下链接 中内核模块,作为调试示例。

如果调试的目标虚拟机是Ubuntu16.04,使用如下分支:

git clone -b build-for-ubuntu16046 https://github.com/caisan/simplefs

如果是centos7 作为调试的目标虚拟机主机,使用如下分支:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值