1 环境
- Ubuntu 20.04
- VMware Worksation 16 Player
- Linux Kernel 5.4.0
2 设置虚拟机
2.1 准备两台虚拟机
- 准备一台虚拟机,然后克隆一台虚拟机,
- 下面以左边为客户端和右边为目标机展示.
2.2 配置虚拟机
- 配置串口
- 配置客户机(左边客户端)和目标机(右边服务器端)
\.\pipe\com_1
- 配置好后,请使用如下图方式验证
2.3 配置服务器端grub
- 配置好串口后请打开服务器端grub,添加如下的信息.
sudo vim /etc/default/grub
update-grub
continuing. warning: cannot insert breakpoint 1. cannot access memory at address 0xffffffff8289fd70
- 如果出现上面的错误,请在
GRUB_CMDLINE_LINUX
上添加nokaslr
, 然后更新grub.
3 配置内核KGDB
- 基本内核信息都会默认满足KGDB信息, 请自行查看资料, 这里不再赘述
4 调试内核
- 服务器端使用下面的命令
echo g > /proc/sysrq-trigger
- 客户端使用下面的命令
gdb vmlinux
target remote /dev/ttyS1
b _do_fork
c
5 tips
缩短开机时间
在/etc/default/grub中,可以添加一个GRUB_RECORDFAIL_TIMEOUT参数,该参数:
GRUB_RECORDFAIL_TIMEOUT = -1 并不倒计时数秒,GRUB menu会出现
GRUB_RECORDFAIL_TIMEOUT = 0 grub menu不会出现
GRUB_RECORDFAIL_TIMEOUT >= 1 grub menu 会展现 设置的秒数
GRUB选择系统
GRUB_DEFAULT=“1>4”