Linux: perf top,无法找到内核符号。

7

使用Linux-Next内核2015-06-04编译并安装在Ubuntu 15.04上。

然后启动该内核,运行perf top命令,但它会显示未找到符号。

如何在perf中手动加载内核符号?

root@ubuntu-server:/boot# uname -r
4.1.0-rc6.060402222+

root@ubuntu-server:/proc# ls kall*
kallsyms

root@ubuntu-server:/boot# ls | grep 4.1.0-rc6.060402222
config-4.1.0-rc6.060402222+
initrd.img-4.1.0-rc6.060402222+
System.map-4.1.0-rc6.060402222+
vmlinuz-4.1.0-rc6.060402222+

root@ubuntu-server:/# perf top
No kallsyms or vmlinux with build-id 438e4365574d514672888bcfdd6292dbcf71f38f was found
[kernel.kallsyms] with build id 438e4365574d514672888bcfdd6292dbcf71f38f not found, continuing without symbols
Warning:
A vmlinux file was not found.
Kernel samples will not be resolved.
^C

root@ubuntu-server:/proc# perf top -k /boot/vmlinuz-4.1.0-rc6.060402222+
Warning:
The /boot/vmlinuz-4.1.0-rc6.060402222+ file can't be used: Success
Kernel samples will not be resolved.
^C

在 Linux-next 文件夹中,.config 文件已启用内核调试:
CONFIG_DEBUG_KERNEL=y

你有 /proc/kallsyms 文件吗? 在你的 Linux 配置文件中是否定义了 CONFIG_DEBUG_KERNEL? 你尝试过使用选项 -k--vmlinux(它们的意思相同)来指定 vmlinux 路径吗? - amigadev
是的。请查看我的更新问题。 - Howard Shane
那回答了其中的一个问题 :-) - amigadev
1个回答

1
我安装了perf,并运行"perf top",得到以下消息:
警告: 未找到vmlinux文件。 内核样本将无法被解析。
安装了"libelf-dev"之后,我再次编译perf并进行安装。 最后,我运行"perf top"并得到正确的结果。
在安装perf时,系统会提供一些提示。例如:
config/Makefile:276: 未发现libelf,禁用'probe'工具,请安装elfutils-libelf-devel/libelf-dev config/Makefile:327: 未发现libunwind,禁用后置展开支持,请安装libunwind-dev[el] >= 1.1 config/Makefile:350: 未发现libaudit.h,禁用'trace'工具,请安装audit-libs-devel或libaudit-dev config/Makefile:364: 未发现slang,禁用TUI支持,请安装slang-devel或libslang-dev
按照这些提示,也许您可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接