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

addr2line on kernel address cannot find source line

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

addr2line -e vmlinux 0xffffffff9be625f0

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

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

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

$ info line *0xffffffff9be625f0

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

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

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

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