linux - 内核地址上的 addr2line 找不到源代码行

标签 linux linux-kernel gdb addr2line

我正在构建一个启用了调试符号的自定义 Linux 内核 (4.15.0 x86_64)。我发现 addr2line 无法指向源代码行。

addr2line -e vmlinux 0xffffffff9be625f0

gdb 还使用以下命令返回“没有可用于地址的行号信息”

$ gdb ../linux/vmlinux /proc/kcore

... Reading symbols from ../linux/vmlinux...done.

$ info line *0xffffffff9be625f0

如何从地址中获取行号?这是 .config文件。

最佳答案

首先 - 尝试从/proc/kallsyms 中找出该地址属于哪个过程。然后计算这个地址从这个过程开始的偏移量。然后:

objdump -D -S -l ./vmlinux | less

找到您的过程名称,然后移动到您的偏移量。 当然,您的内核 vmlinux 应该使用调试符号进行编译。

关于linux - 内核地址上的 addr2line 找不到源代码行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50242559/

相关文章:

debugging - 通过QEMU在GDB中调试Linux内核时,如何显示所有x86控制寄存器?

c++ - 在 GDB 中打印局部变量

Linux 用多列连接多个文件

linux - 关于Linux命令 "find -exec {}"的问题

linux - 使用/proc/kcore 调试内核

c - mm_struct 中的 cpumask 是什么

ubuntu - 调试时如何加载 gdbinit?

linux - 树莓派 : How to specify the default runlevel?

mysql - 建立数据库连接时出错

Linux CPU 频率缩放影响 timerfd 精度