作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想从 ftrace 在 rapberry pi 3 上输出的函数地址获取内核源代码文件名和内核函数的行号。
我在树莓派 3 上尝试了 addr2line -e/boot/kernel8.img [function address]
。但是它返回了 addr2line:/boot/kernel8.img: File format not recognized
.
注意:
kernel8.img
是我编译的自定义内核。我从 https://github.com/raspberrypi/linux.git
克隆内核源代码, checkout 到 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
谢谢
最佳答案
您需要针对 vmlinux
文件(即未压缩/原始内核二进制文件)运行 addr2line
。 /boot/kernel8.img
很可能是一个 zImage
(即压缩内核)。编译后,您可以在内核源代码的根目录中找到 vmlinux
文件。
关于linux - 树莓派 3 上的 ftrace + addr2line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51328206/
我是一名优秀的程序员,十分优秀!