trace-cmd report仅显示内存地址不显示函数名如何解决?
trace-cmd report 显示函数内存地址不显示函数名的解决方法
出现该问题的核心原因是trace-cmd无法获取到对应内核版本的符号映射表,可按以下步骤排查解决:
- 优先使用root权限执行report命令
普通用户默认没有读取/proc/kallsyms全量内核符号地址的权限,直接执行:sudo trace-cmd report - 安装对应内核版本的调试符号包
不同发行版的安装命令不同:- Debian/Ubuntu 系列:
sudo apt install linux-image-$(uname -r)-dbgsym - CentOS/RHEL 系列:
sudo debuginfo-install kernel-$(uname -r) - openSUSE 系列:
sudo zypper install kernel-default-debuginfo-$(uname -r)
- Debian/Ubuntu 系列:
- 手动指定内核符号文件路径
如果你使用自定义编译的内核,或者调试符号保存在非标准路径,可以通过--symbols参数指定带调试信息的vmlinux或者System.map文件路径:# 示例:指定对应内核的vmlinux路径 trace-cmd report --symbols /path/to/your/vmlinux
注意:如果你是在其他设备上录制的trace.dat文件,需要保证解析设备上安装的调试符号版本和录制设备运行的内核版本完全一致,否则无法正常解析符号。
内容的提问来源于stack exchange,提问作者wenhung
相关产品推荐
相关产品推荐

