raspberry pi 3 上的 ftrace + addr2line

ftrace + addr2line on raspberry pi 3

我想通过ftrace在rapberry pi 3上输出的函数地址获取内核源代码文件名和内核函数的行号

我在 raspberry pi 3 上尝试了 addr2line -e /boot/kernel8.img [function address]。但它返回了 addr2line: /boot/kernel8.img: File format not recognized

注:

kernel8.img 是我编译的自定义内核。我从 https://github.com/raspberrypi/linux.git 克隆内核源代码,检出到 rpi-4.18.y,打开 CONFIG_DEBUG_INFO 和 运行 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4。此编译工作在 ubuntu x86_64 linux 内核 4.15.0-23-generic 上执行。 kernel8.img的类型如下

$ file kernel8.img
kernel8.img: MS-DOS executable

谢谢

您需要 运行 addr2linevmlinux 文件(即 uncompressed/raw 内核二进制文件)。 /boot/kernel8.img 很可能是 zImage (即压缩内核)。 编译后,您可以在内核源代码的根目录中找到 vmlinux 文件。