准备两台虚拟机,一台编译内核,编译后将vmlinux system.map拷贝到另一台在boot下建立软连接

这样在调试端用gdb vmlinux还可以找到代码看代码

 

配置两台虚拟机的串口为pipe形式,名字相同,一个为server,一个为client

被调试的虚拟机(client):
 在grub中最后加kgdboc=ttyS0,115200 kgdbwait

server端的虚拟机:
 (gdb) set remotebaud 115200

 (gdb) target remote /dev/ttyS0

 Remote debugging using /dev/ttyS0

 kgdb_breakpoint (new_kgdb_io_ops=0xc0a0b7d8) at kernel/kgdb.c:1721

 1721 wmb(); /* Sync point after breakpoint */

 (gdb) c

 

continue之后,被调试的虚拟机继续启动,启动完成后,可以用 echo g > /proc/sysrq-trigger 来使调试虚拟机的gdb响应来进一步设置断点等

 

也可以在启动之后通过 echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc 来指定串口 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐