内核地址上的 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应该用调试符号编译。
我正在构建一个启用了调试符号的自定义 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应该用调试符号编译。