欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用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
  • 分析问题...
相关标签: 小问题 linux