如何使用GDB远程调试linux模块?

如何使用GDB远程调试linux模块?

我在互联网上进行了搜索,但找不到使用 gdb 远程调试 Linux 模块的正确步骤。我正在尝试 qemu 但在那里面临很多问题。还有其他我可以使用的工具吗?如果没有,您能给我提供远程调试 Linux 模块的正确步骤吗?

答案1

不应该那么难。来自官方内核文档(不要搜索“满网”。搜索官方文档,你会发现更少的不良信息):

  1. 拥有已启用的内核KGBD,并确保在构建过程中配置选项CONFIG_GDB_SCRIPTS处于打开状态。 (有关如何构建内核包的信息,请参阅 CentOS 文档;这是最简单的方法)
    • 跑步make scripts_gdb
  2. 将该内核 ( vmlinux) 复制到您的主机系统中,以便在本地轻松了解内核符号
  3. 在 QEMU 中运行您选择的 Linux 发行版
    • 启用 QEMU 的 GDB 存根,并侦听某个端口,即qemu使用运行-gdb tcp::$SOMEPORT,其中$SOMEPORT是您要使用的端口号(应 > 1024,< 21⁶)。或者,运行-s,与 相同-gdb tcp::1234
    • -S通过提供选项确保 QEMU 不会立即启动机器
  4. 在主机上,运行gdb /path/to/the/kernel/vmlinux
  5. 在 中gdb,附加到您的 QEMU 存根:target remote :$SOMEPORT.
  6. 您现在可以运行continue来启动虚拟机

相关内容