GDB:lx-symbols未定义命令

7
我正在按照以下指南进行操作: 通过gdb调试内核和模块 当我尝试使用以下命令加载模块符号时: (gdb) lx-symbols
gdb显示该命令未定义。如何将这些辅助命令添加到gdb中?
gdb信息:Centos 7.0上的gdb-7.6.1-51.el7.x86-64

(gdb) apropos lx 显示什么? - Milind Dumbare
3个回答

4
您需要获取最新的内核源代码(可能是4.0-rc4),或者回溯补丁。基本上,看看您的内核源代码中是否有像这个目录下的script/gdb/目录,因为那里可以获取这些脚本。
然后,按照通过gdb调试内核和模块中提到的步骤进行操作。

我使用了“git”从git://git.kiszka.org/linux.git获取内核源代码。 script/gdb 目录在那里。确认已在 .config 中设置了 CONFIG_GDB_SCRIPTS 和 CONFIG_KGDB 及其他 DBG 标志。编译并安装了新的内核。我阅读了 Makefile,其中提到了 vmlinux-gdb.py 脚本的引用。但是,在新内核中无法找到此脚本。它保留在构建源树中。如何检查我的构建是否正确完成? - Chu Bun
它不是在构建源代码树中的 scripts/gdb/ 目录下吗? - Milind Dumbare
我不明白为什么你需要在目标机器上运行这些脚本?这些脚本难道不是应该与构建目录有关吗?请看这两个步骤,其中你需要 cd /path/to/linux-build 然后启动 gdb:gdb vmlinux。这些步骤应该是在你构建源代码的地方执行的。 - Milind Dumbare
这是我所做的步骤:
  • 下载内核源码和补丁。
  • 编译内核源码。
  • 将其加载到虚拟机计算机上。
  • 启动虚拟机计算机。
  • 在主机计算机上运行"gdb vmlinux"。
- Chu Bun
1
我使用了gdb命令info auto-load python-scripts来查看脚本是否已加载。顶级目录下的脚本符号链接已损坏,因为我将构建目录从虚拟机复制到不同位置的主机上,而符号链接实际上是绝对路径而不是相对路径。使用ln -sf scripts/gdb/vmlinux-gdb.py修复符号链接并重新加载gdb,问题得到解决。 - fgiraldeau
显示剩余5条评论

1

0

我也遇到了类似的问题。在我的情况下,问题是因为我没有将自动加载安全路径设置为../scripts/gdb/vmlinux-gdb.py而引起的,所以我创建了~/.gdbinit文件并添加了以下内容:

add-auto-load-safe-path path/to/linux/kernel/tree/scripts/gdb/vmlinux-gdb.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接