我正在构建一个启用了调试符号的自定义 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/