基于kgdb调试uos-1060-6026
基于kgdb调试uos-1060-6026
- cpu架构:amd64
基于virt-manager搭建调试环境

基于virt-manager可以模拟串口,加快调试环境的搭建,本次宿主机提供的串口设备为/dev/pts/2
,x86虚拟机内一般为/dev/ttyS0
。
在宿主机上安装minicom
、虚拟机上安装cutecom
可以测试串口设备通不通。
1 |
|
1 |
|
如果使用的是真实串口设备,宿主机串口设备设别一般为/dev/ttyUSB0
,x86被调试机串口设备一般为/dev/ttyS0
,arm被调试机串口设备一般为/dev/ttyAMA0
。
具体串口请使用minicom
、cutecom
测试确认。
被调试设备引导参数
1 |
|
1 |
|

如果想在内核引导阶段调试,在上图红框中增加kgdbwait
参数即可。
1 |
|
1 |
|
1 |
|
不想修改引导参数
echo "ttyS0,115200" > /sys/module/kgdboc/parameters/kgdboc
这种方式最简单,可以不重启机器调试内核。
被调试设备陷入kgdb
1 |
|
注意,每次打断点前都要先执行上述命令。
宿主机gdb vmlinux
进入内核源码目录后使用gdb vmlinux
命令进入gdb:
1 |
|
执行完上述命令后即可通过串口设备连接被调试设备。

打断点
宿主机上执行
内核编译选项CONFIG_GDB_SCRIPTS = y
会在内核源码根目录下生成vmlinux-gdb.py
软链接,指向编译内核源码机器的scripts/gdb/vmlinux-gdb.py
文件,由于我是在服务器上编译后拷贝到我本机的,需要先删除此链接,然后根据实际源文件新建,具体命令如下:
1 |
|
使用kgdb
提供的额外扩展命令lx-symbols
可以加载内核ko模块调试符号,不然断点会显示no source file named ... pending
。
1 |
|
1 |
|
1 |
|
被调试机上执行
1 |
|
段点命中


基于kgdb调试uos-1060-6026
https://realwujing.github.io/linux/debug/sysrq_trigger/基于kgdb调试uos-1060-6026/