我在互联网上进行了搜索,但找不到使用 gdb 远程调试 Linux 模块的正确步骤。我正在尝试 qemu 但在那里面临很多问题。还有其他我可以使用的工具吗?如果没有,您能给我提供远程调试 Linux 模块的正确步骤吗?
答案1
不应该那么难。来自官方内核文档(不要搜索“满网”。搜索官方文档,你会发现更少的不良信息):
- 拥有已启用的内核
KGBD
,并确保在构建过程中配置选项CONFIG_GDB_SCRIPTS
处于打开状态。 (有关如何构建内核包的信息,请参阅 CentOS 文档;这是最简单的方法)- 跑步
make scripts_gdb
- 跑步
- 将该内核 (
vmlinux
) 复制到您的主机系统中,以便在本地轻松了解内核符号 - 在 QEMU 中运行您选择的 Linux 发行版
- 启用 QEMU 的 GDB 存根,并侦听某个端口,即
qemu
使用运行-gdb tcp::$SOMEPORT
,其中$SOMEPORT
是您要使用的端口号(应 > 1024,< 21⁶)。或者,运行-s
,与 相同-gdb tcp::1234
。 -S
通过提供选项确保 QEMU 不会立即启动机器
- 启用 QEMU 的 GDB 存根,并侦听某个端口,即
- 在主机上,运行
gdb /path/to/the/kernel/vmlinux
- 在 中
gdb
,附加到您的 QEMU 存根:target remote :$SOMEPORT
. - 您现在可以运行
continue
来启动虚拟机