更新时间:2026-09-14 GMT+08:00
分享

通过Debugging诊断组件代码

Debugging诊断可协助用户分析线程状况,获取方法及对象实时参数。方便开发人员从实时的远程应用程序中获取调试信息,而无需重新启动应用程序,也不会阻止它并导致服务停机。

使用限制

  • Debugging诊断当前受限使用,若需使用请提交工单联系技术支持开通。
  • 为了应用运行稳定,强烈建议您按照要求升级JDK版本,在低版本的JDK上使用Debugging诊断功能,存在应用崩溃的风险。

    Agent版本为2.5.1及以上时,融合了profiler相关特性,支持Debugging诊断,是探针的合一包,具体版本信息请参见JavaAgent更新说明。

    表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诊断代码

  1. 登录APM控制台。
  1. 在左侧导航栏选择“性能监控 > 组件列表”,进入组件列表页面。

  1. 在左侧筛选栏中,选择“区域”以及“所属应用”。
  1. 单击组件名称,单击“Debugging诊断”,切换至“Debugging诊断”页签。
  2. 根据业务需要进行相应分析。

    • 线程分析:支持显示该应用的所有线程和查看线程的堆栈信息。通过Debugging诊断线程,帮助用户快速定位耗时较高的线程。具体操作可参见通过线程分析查看耗时较高的线程。

      由于线程分析获取方法以及对象的实时参数,因此线程的状态等相关信息可能会产生变化。

    • 方法分析:支持检查正在运行的方法的耗时明细、调用来源以及方法源码。通过Debugging诊断方法,帮助用户快速定位问题的根本原因,以及问题线下无法复现或日志缺失等场景。具体操作可参见通过方法分析查看运行方法的信息。
    • 对象分析:用于分析某个对象内部状态,并支持查看对象参数值和详细信息。具体操作可参见通过对象分析查看内部对象的状态。

了解“Debugging诊断”的更多内容,请参见通过Debugging诊断代码。

相关文档