我参照这份slideshare中提供的指令:https://www.slideshare.net/brendangregg/java-performance-analysis-on-linux-with-flame-graphs 以下是我正在运行的命令:
1. sudo perf record -F 997 -a -g
2. sudo perf script > out.stacks01
当我运行第二个命令时,它显示如下消息:
Failed to open /tmp/perf-9931.map, continuing without symbols.
no symbols found in <some path>, maybe install a debug package?
我进行了一些在线浏览,并尝试按照此处所述安装调试包:https://gist.github.com/NLKNguyen/2fd920e2a50fd4b9701f 但是,当我运行“sudo apt-get update”时,它最终失败并显示“无法提取......”
有人能解决这里的问题吗?为了正确安装调试符号包,我需要做什么?
编辑: 我的主要问题在于生成的火焰图中没有Java符号,因此我最终关注以上错误/消息。下面接受的答案为我的原始帖子提供了非常好的解释。然而,我能够通过运行如下命令来解决我的问题:jmaps。
sudo perf record -F 997 -a -g -- sleep 300; jmaps
这在上面分享的幻灯片链接中有记录说明。
failed to open /tmp/perf-9931.map
信息不是关于调试信息的 - 它涉及在没有兼容的perf profiling代理运行时分析JITted代码 = http://www.brendangregg.com/perf.html#JIT_Symbols "Java可以使用perf-map-agent" - https ://github.com/jvm-profiling-tools/perf-map-agent - 使用perf-map-agent
重新启动应用程序。 - osgx