使用qemu和gdb调试内核
程序员文章站
2022-07-14 12:42:24
...
我们可以使用 qemu 和 gdb 调试 linux 内核,现将使用方法记录如下:
1、编译待调试的内核
(略)
2、使用 qemu 启动指定内核
示例命令(需要修改)
$ qemu-xxx -m 4096 -boot c -smp 1
-drive file=$qcow,format=qcow2,if=none,id=drive-virtio-disk0
-device virtio-blk-pci,scsi=off,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0
-M $MACHINE -cpu $CPU -kernel $vmlinux --enable-kvm
-append "root=/dev/vda2 rw console=ttyS0,115200 nr_cpus=1 maxcpus=2 S loglevel=8"
-d int -nographic -serial stdio -monitor tcp::4000,server,nowait
-gdb tcp::9527 -bios $bios
需要注意的两个参数:
- -gdb 参数
指定 gdb 端口: -gdb tcp::9527
- -kernel 参数
指定内核镜像:-kernel /path_to/vmlinux
3、使用 gdb 远程调试内核
- 启动 gdb
$ gdb /path_to/vmlinux
- 设置断点
(gdb) b *0xffff....0000 //将某个内核地址设置为断点
(gdb) c //继续运行
- 在 qemu 启动好的系统中做一些操作,触发上述内核地址所对应的代码
- 打印寄存器参数
(gdb) info registers
- 分析问题...
上一篇: 在路上
下一篇: html定位 & 细致模仿百度首页