【问题标题】:“No source available 0x” when debugging Linux kernel with Eclipse CDT使用 Eclipse CDT 调试 Linux 内核时出现“No source available 0x”
【发布时间】:2015-02-20 09:59:52
【问题描述】:

这是我在 stackoverflow 上的第一篇文章,如有任何错误,我们深表歉意 :)。我正在尝试按照多个网站中提供的信息使用 Eclipse/CDT 调试 Linux 内核。但是,每次我尝试调试内核时,我都会收到“No source available 0x.....”消息。(请参阅随附的屏幕截图)。

  1. 我使用 qemu 虚拟机“qemu -s -S -kernel bzImage ...”运行 linux 内核

  2. 我尝试从 Eclipse/CDT 运行调试。为此,我配置了“C/C++ 附加到应用程序”调试。该应用程序是 vmlinux 文件。 gdbserver 类型的远程配置配置为 localhost:1234。

虽然我无法使用 Eclipse/CDT 进行调试,但我可以使用 gdb CLI 调试内核:

# gdb vmlinux
> remote target localhost:1234
> cont

版本信息:

  • Linux Mint 17 KDE
  • Eclipse 4.4.1
  • CDT 8.5.0
  • qemu 2.0.0+dfsg-2ubuntu1.9
  • gcc 4.8.2-1ubuntu6
  • gdb 7.7.1-0ubuntu5~14.04.2

【问题讨论】:

  • 在构建linux内核镜像时检查是否启用了CONFIG_KGDB
  • 是的,它已启用,根据我的 .config -> CONFIG_KGDB=y
  • 源文件实际上必须可用,GDB 将在其中看到它们,并且许多目标文件在编译时需要可用并使用 -gdb3 参数编译(在 gcc 上)
  • 可用的内核源代码在 kernel/* 和 kernel/build/* 下的目标文件;而 kernel/* 是 Eclipse/CDT 项目的主文件夹。在调试内核的“Debug configurations”中,有一个“Source”选项卡,已经包含了所有的kernel/*文件。

标签: c eclipse debugging linux-kernel eclipse-cdt


【解决方案1】:

“C/C++ 附加到应用程序”调试配置不适用于此设置。您可以改用“C/C++ 远程应用程序”配置,并使用手动远程调试启动器:

  • 在 Eclipse 中打开“调试配置”窗口并新建一个“C/C++ 远程应用程序”配置
  • 在窗口底部有正在使用哪个启动器的指示:如果您看到手动远程调试启动器以外的任何内容,请单击“选择其他...”并在启动器选择窗口中选择“ GDB (DSF) 手动远程调试启动器"
  • 在调试配置的 Main 选项卡中,在 Project 字段中输入您拥有 Linux 内核的 Eclipse 项目,并在 C/C++ Application 字段中输入您的 vmlinux 文件
  • 在 Debugger 选项卡的 Debugger Options 下,选择 Connection 选项卡,然后选择 TCP 作为连接类型,在主机地址字段中写入“localhost”,在端口号字段中写入“1234”
  • 可能在“源”选项卡中调整源查找路径
  • 使用通常的“-s -S”选项启动 QEMU
  • 现在您应该可以在 Eclipse 中启动调试会话,并使用有效的符号解析和源代码查找

【讨论】:

    猜你喜欢
    • 2012-10-09
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2010-11-08
    • 2022-08-24
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多