linux - 为什么 perf 脚本不起作用?

标签 linux perf

作为 Linux 中的绿色图形,我想使用“perf”来生成火焰图。 为确保正常运行,我遵循了“火焰图”官方 github 页面的说明[ https://github.com/brendangregg/FlameGraph]

但是,当我使用命令pref script > out.pref 时,出现了这些错误:

在/usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so 中找不到符号,也许安装调试包? 无法打开/tmp/perf-6637.map,继续无符号 无法打开/tmp/perf-6663.map,继续无符号 无法打开/tmp/perf-6674.map,继续无符号 无法打开/tmp/perf-6703.map,继续无符号 无法打开/tmp/perf-6713.map,继续无符号 无法打开/tmp/perf-6720.map,继续无符号 无法打开/tmp/perf-6755.map,继续无符号 无法打开/tmp/perf-6772.map,继续无符号

我在Google和perf的WiKi上搜索了很多次,发现还有一个命令perf script -i perf.data % > out.pref,居然可以用。

但是下一个命令 perl ../FlameGraph/stackcollapse-perf.pl perf.unfold & > perf.folded 会发出这个错误:

[1]+ 停止的 perf 脚本 -i perf.data

好像也解决不了这个问题。我尝试从源代码为我的系统重建 perf,但这似乎也没有帮助。

我已经尝试了多种变体,但似乎都不起作用。最好的方法是什么?提前致谢。

最佳答案

如果你想解决符号问题,你可以尝试这样做:

# Install the debugging symbols for vmwgfx_dri and your kernel using something 

dnf debuginfo-install -y mesa-dri-drivers
dnf debuginfo-install -y kernel

我认为使用 flamgraph 工具,您只需将 perf.data 文件放在同一目录中,然后运行: 火焰图 > my_flamegraph.svg

然后您在浏览器中或使用某种 svg 查看器打开 my_flamegraph.svg。

perf 脚本将显示您使用 perf 分析的程序堆栈的文本版本,这也非常有用。

关于linux - 为什么 perf 脚本不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37186137/

相关文章:

regex - find 命令无法排除确切的正则表达式

python - 尝试运行 Python35 脚本时使用 nohup 吗?

profiling - perf.data 文件没有样本

linux - linux gettimeofday() 的微秒时间是如何获取的,其精度如何?

linux - 我在哪里可以找到 Linux 内核源代码树的版本?

javascript - Node 中的Linux系统变量

kernel - 在哪里可以找到 perf 事件文档

c++ - 如何在mmap中使用PERF_SAMPLE_READ

c++ - 如何获得涉及 C++ 标准库的帧指针 perf 调用堆栈/火焰图?

java - 在进行特定系统调用时记录 java 堆栈跟踪?