GDB调试Linux源码

参考链接:https://cloud.tencent.com/developer/article/2363207?from=15425
linux版本:ubuntu22.04

一级标题

1 安装qemu/kvm

$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager

2启动libvertd服务

$ sudo systemctl enable libvirtd
$ sudo systemctl start libvirtd

3创建虚拟机

qemu-img create -f qcow2 ubuntutest.img 60G

4往镜像中安装操作系统

qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 4096 -hda ubuntutest.img -cdrom ~/Downloads/ubuntu-24.04-desktop-amd64.iso -boot d

我的iso文件位置是在~/Downloads/ubuntu-24.04-desktop-amd64.iso,大家根据自己的更改即可
输入完上面的命令就弹出这个界面在这里插入图片描述点击回车,等会就到这个页面
在这里插入图片描述熟悉的ubuntu启动界面,然后就跳到安装页面,一路默认即可。等着装好

在这里插入图片描述点击Restart now,过会儿弹出这界面

在这里插入图片描述点击回车,又到刚才那界面
在这里插入图片描述

直接点击右上角的叉。
在输入下面的命令

qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 4096 -hda ubuntutest.img -boot d

就启动了刚才装的操作系统

在这里插入图片描述

设置共享文件

先把刚才开启的虚拟机关掉
然后在本地输入以下命令

qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 4096 -hda ubuntutest.img -boot d -virtfs local,path=/home/pipishuo/KVM_Share/,mount_tag=hostshare,security_model=none,id=hostshare

上面的命令会启动虚拟机,path=/home/pipishuo/KVM_Share/ 这是我自己电脑要共享的目录 大家自行更改

启动完成后在虚拟机中输入

sudo mount -t 9p hostshare /home/ppshuo/share

/home/ppshuo/share 也是我自己虚拟机中的目录 大家自行更改
完成后在虚拟机中打开共享目录即可看到文件共享了
在这里插入图片描述

编译LinuxKernel

参考链接:https://phoenixnap.com/kb/build-linux-kernel

  1. 进入目录,我是把源码文件放到共享目录底下了,这样方便虚拟机安装编译好的内核,也方便本地机去调试
    在这里插入图片描述2)安装依赖包
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

3)复制配置文件

cp -v /boot/config-$(uname -r) .config

4)配置内核

make menuconfig

在这里插入图片描述
按照这个路径把CONFIG_RANDOMIZE_BASE关闭
在这里插入图片描述
具体演示
在这里插入图片描述
回车,往下找到这个
在这里插入图片描述
按n键,点保存

在这里插入图片描述
点ok
在这里插入图片描述
退出
在这里插入图片描述执行这两个命令,跟什么安全证书有关

scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS

make

make -j8

在这里插入图片描述回车回车
等一会儿 编完后打开虚拟机
挂载共享目录,这个是每次打开虚拟机都要挂的,要不然共享不了

sudo mount -t 9p hostshare /home/ppshuo/share

进入共享目录
在这里插入图片描述执行命令

sudo make modules_install

在这里插入图片描述oh shit,忘安装make

sudo apt-get install make

执行命令

sudo make modules_install

执行完如下:
在这里插入图片描述
执行命令

sudo make install

执行完如下
在这里插入图片描述
重启虚拟机
执行命令

uname -r

在这里插入图片描述可以看到是6.10.0 至于后面的ModifyFs,是我自己之前弄的,无伤大雅。总之是装成功了。

gdb连接

把虚拟机关掉,在本地机中打开源码目录
执行命令

make scripts_gdb

在这里插入图片描述执行命令

vim ~/.gdbinit

添加这条语句

add-auto-load-safe-path /home/pipishuo/KVM_Share/linux/linux/scripts/gdb/vmlinux-gdb.py

在这里插入图片描述

那个py文件的路径根据各位源码目录来更改

运行虚拟机

qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 4096 -hda ubuntutest.img -boot d -virtfs local,path=/home/pipishuo/KVM_Share/,mount_tag=hostshare,security_model=none,id=hostshare -s -S

注意 这次加了两个参数 -s -S
效果如下
在这里插入图片描述
在源码路径下执行命令

gdb vmlinux

效果如下
在这里插入图片描述
接着执行

(gdb) target remote :1234

效果如下
在这里插入图片描述
接着执行

(gdb) c

效果如下
在这里插入图片描述
虚拟机也不一样了
在这里插入图片描述
在这里插入图片描述
也运行起来了
在gdb那界面按ctrl-c
效果如下
在这里插入图片描述设个断点

b do_sys_open
c

效果如下
在这里插入图片描述这就进来了 ,虚拟机那也卡在这了,就可以和正常调试软件一样调试linuxKernel了
关于gdb的调试语法参考链接:https://docs.kernel.org/dev-tools/gdb-kernel-debugging.html

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值