linux - 如何从 vmlinux 安装 debuginfo 包

标签 linux linux-kernel kernel perf debug-information

我正在使用以下选项集构建自己的内核。

CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_INFO=y

所以我假设生成的 vmlinux 文件将包含所有必需的调试信息。

我在机器中安装了该内核,并将 vmlinux 文件放在/boot/下。 但是,当我尝试进行性能注释时,它不会在汇编代码旁边显示源代码。它只显示汇编代码和 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

我在这里缺少什么?我需要单独安装 debuginfo 包吗?

问候, 阿蒂什

最佳答案

构建内核 rpm 的 binrpm-pkg 目标不会生成 debuginfo,因为它禁用了 debuginfo 包的生成,您可以尝试执行此操作,在内核源代码树中打开 scripts/package/mkspec,然后搜索一行echo "%define debug_package %{nil}",注释或删除该行,然后尝试再次构建。

原因是这一行明确告诉 rpmbuild 跳过 debuginfo 包。

查看链接:

https://github.com/torvalds/linux/blob/9256d5a308c95a50c6e85d682492ae1f86a70f9b/scripts/package/mkspec#L45

关于linux - 如何从 vmlinux 安装 debuginfo 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36672177/

相关文章:

编译内核模块错误

linux - 从共享对象中抛出段错误的回调

android - 填满安卓设备的磁盘空间

linux - 复制服务器的全部内容

linux-kernel - dmesg 没有显示 printk 语句

c - 了解 file_operations 的 loff_t *offp

c - 为什么在尝试从我的内核模块访问共享内存时得到 "Unhandled fault: imprecise external abort"?

c++ - 将内存池与需要对齐内存的 cpu 一起使用是个好主意吗?

linux - 是否可以修改接口(interface)索引

c - 非法内存读取或跳转后恢复IP寄存器