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
谢谢
您需要 运行 addr2line
对 vmlinux
文件(即 uncompressed/raw 内核二进制文件)。 /boot/kernel8.img
很可能是 zImage
(即压缩内核)。
编译后,您可以在内核源代码的根目录中找到 vmlinux
文件。
我想通过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
谢谢
您需要 运行 addr2line
对 vmlinux
文件(即 uncompressed/raw 内核二进制文件)。 /boot/kernel8.img
很可能是 zImage
(即压缩内核)。
编译后,您可以在内核源代码的根目录中找到 vmlinux
文件。