如何从 vmlinux 安装调试信息包
how to install debuginfo packages from vmlinux
我正在使用以下选项集构建自己的内核。
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_INFO=y
所以我假设生成的 vmlinux 文件将包含所有必需的调试信息。
我在一台机器上安装了那个内核,并将 vmlinux 文件放在 /boot/ 下。
但是,当我尝试执行 perf annotate 时,它不会在汇编代码旁边显示源代码。它只显示汇编代码和 c 函数名称而不是整个源代码(我曾尝试在注释期间切换 "s")。
这是我的性能命令。
#perf record -g -a -e cycles:k sleep 5
#perf report -f -g -s symbol
#perf annotate -f -s <kernel function name> > annotate_<kernel_function>.txt
我在这里错过了什么?我需要单独安装调试信息包吗?
此致,
阿蒂什
用于构建内核 rpm 的 binrpm-pkg 目标不会生成调试信息,因为它禁用了调试信息包的生成,您可以尝试这样做,在您的内核源代码树中打开 scripts/package/mkspec
,并搜索一行 echo "%define debug_package %{nil}"
, 注释或删除此行,然后重新构建。
原因是这一行明确告诉 rpmbuild 跳过 debuginfo 包。
参见link:
我正在使用以下选项集构建自己的内核。
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_INFO=y
所以我假设生成的 vmlinux 文件将包含所有必需的调试信息。
我在一台机器上安装了那个内核,并将 vmlinux 文件放在 /boot/ 下。 但是,当我尝试执行 perf annotate 时,它不会在汇编代码旁边显示源代码。它只显示汇编代码和 c 函数名称而不是整个源代码(我曾尝试在注释期间切换 "s")。
这是我的性能命令。
#perf record -g -a -e cycles:k sleep 5
#perf report -f -g -s symbol
#perf annotate -f -s <kernel function name> > annotate_<kernel_function>.txt
我在这里错过了什么?我需要单独安装调试信息包吗?
此致, 阿蒂什
用于构建内核 rpm 的 binrpm-pkg 目标不会生成调试信息,因为它禁用了调试信息包的生成,您可以尝试这样做,在您的内核源代码树中打开 scripts/package/mkspec
,并搜索一行 echo "%define debug_package %{nil}"
, 注释或删除此行,然后重新构建。
原因是这一行明确告诉 rpmbuild 跳过 debuginfo 包。
参见link: