【发布时间】:2017-08-13 22:00:06
【问题描述】:
我正在尝试为我的应用收集一些分析数据,并为此运行 perf 工具和 Flame Graphs。
我指的是此幻灯片中提供的说明: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
这在上面共享的幻灯片共享链接中的说明中有记录。
【问题讨论】:
-
“可以安装调试包吗?”
-
是的,就是这么说的,我不确定如何正确安装它。
-
"sudo apt-get update", with "Failed to fetch......" 表示你的 linux 可能太旧了(并且软件包已像旧版本一样移动到其他服务器。 ubuntu.com 或 archive.ubuntu.com - 检查您的 /etc/apt/sources.list.d)?并且
Failed to open /tmp/perf-9931.map消息与调试信息无关 - 它是关于在与 perf 分析代理运行不兼容时分析 JITted 代码 = brendangregg.com/perf.html#JIT_Symbols "Java 可以使用 perf-map-agent 执行此操作" - github.com/jvm-profiling-tools/perf-map-agent - 使用perf-map-agent重新运行您的应用程序
标签: java profiling ubuntu-16.04 perf