我在鲲鹏服务器上使用DevKit提供的性能分析工具来定位一个Java服务的性能瓶颈。按照文档的说明,我通过工具的图形界面选择了正在运行的目标Java进程,然后启动了采样分析。分析过程没有报错,工具也显示“采集完成”,但生成的报告中调用栈信息那一栏几乎全是“unknown”或者只显示到了libjvm这一层,完全看不到业务代码的调用关系。换成命令行模式用profiler attach去采集,结果也是一样。用perf命令直接采集相同进程的数据,然后用perf script解析,能看到完整的Java符号和调用栈,说明系统和JVM本身的符号导出是没有问题的。DevKit的Java环境配置检测也通过了,jstack命令也能正常连接到目标进程。想请教一下为什么DevKit工具采集不到Java调用栈,是还需要额外安装某些符号映射的组件吗?
我在鲲鹏服务器上使用DevKit提供的性能分析工具来定位一个Java服务的性能瓶颈。按照文档的说明,我通过工具的图形界面选择了正在运行的目标Java进程,然后启动了采样分析。分析过程没有报错,工具也显示“采集完成”,但生成的报告中调用栈信息那一栏几乎全是“unknown”或者只显示到了libjvm这一层,完全看不到业务代码的调用关系。换成命令行模式用profiler attach去采集,结果也是一样。用perf命令直接采集相同进程的数据,然后用perf script解析,能看到完整的Java符号和调用栈,说明系统和JVM本身的符号导出是没有问题的。DevKit的Java环境配置检测也通过了,jstack命令也能正常连接到目标进程。想请教一下为什么DevKit工具采集不到Java调用栈,是还需要额外安装某些符号映射的组件吗?