通过Debugging诊断组件代码
Debugging诊断可协助用户分析线程状况,获取方法及对象实时参数。方便开发人员从实时的远程应用程序中获取调试信息,而无需重新启动应用程序,也不会阻止它并导致服务停机。
使用限制
- Debugging诊断当前受限使用,若需使用请提交工单联系技术支持开通。
- 为了应用运行稳定,强烈建议您按照要求升级JDK版本,在低版本的JDK上使用Debugging诊断功能,存在应用崩溃的风险。
表1 JDK版本说明 JDK类型
版本
OpenJDK
- OpenJDK 8u352+
- OpenJDK 17.0.5+
- OpenJDK 21
Oracle JDK
- Oracle JDK 17.0.9+
- Oracle JDK 21
表2 Agent版本说明 Agent版本
说明
2.5.1及以上版本
JavaAgent版本融合了profiler相关特性,支持Debugging诊断。
2.4.10-profiler
Agent版本2.4.10-profiler及以后版本,支持Debugging诊断。
表3 使用限制以及说明 序号
使用限制及说明
1
Debugging诊断需要环境中含有jdk8或jdk17,如果仅有JRE则无法使用。
2
Debugging诊断仅支持JAVA语言。
性能影响
Debugging诊断功能经性能测试,在一般的应用所有功能效果全部开启的情况下, CPU提升<5%,内存提升<100MB,时延提升<5%左右。
通过Debugging诊断代码
- 登录APM控制台。
- 在左侧导航栏选择“性能监控 > 组件列表”,进入组件列表页面。
- 在左侧筛选栏中,选择“区域”以及“所属应用”。
- 单击组件名称,单击“Debugging诊断”,切换至“Debugging诊断”页签。
- 根据业务需要进行相应分析。
- 线程分析:支持显示该应用的所有线程和查看线程的堆栈信息。通过Debugging诊断线程,帮助用户快速定位耗时较高的线程。具体操作可参见通过线程分析查看耗时较高的线程。
由于线程分析获取方法以及对象的实时参数,因此线程的状态等相关信息可能会产生变化。
- 方法分析:支持检查正在运行的方法的耗时明细、调用来源以及方法源码。通过Debugging诊断方法,帮助用户快速定位问题的根本原因,以及问题线下无法复现或日志缺失等场景。具体操作可参见通过方法分析查看运行方法的信息。
- 对象分析:用于分析某个对象内部状态,并支持查看对象参数值和详细信息。具体操作可参见通过对象分析查看内部对象的状态。
- 线程分析:支持显示该应用的所有线程和查看线程的堆栈信息。通过Debugging诊断线程,帮助用户快速定位耗时较高的线程。具体操作可参见通过线程分析查看耗时较高的线程。
了解“Debugging诊断”的更多内容,请参见通过Debugging诊断代码。