
# 通过Debugging诊断代码
Debugging诊断可协助用户分析线程状况，获取方法及对象实时参数。方便开发人员从实时的远程应用程序中获取调试信息，而无需重新启动应用程序，也不会阻止它并导致服务停机。
#### 使用限制
1. 为了应用运行稳定，强烈建议您按照要求升级JDK版本，在低版本的JDK上使用Debugging诊断功能，存在应用崩溃的风险。
2. Debugging诊断当前受限使用。
   表1JDK版本说明 
   | JDK类型      | 版本                                                                                                                                                                                                                                                                                                                                                   |
   |:---|:---|
   | OpenJDK    | - OpenJDK 8u352+  - OpenJDK 17.0.5+   |
   | Oracle JDK | - Oracle JDK 17.0.9+                                                                                                                                               |
      
   表2Agent版本说明 
   | Agent版本         | 说明                                         |
   |:---|:---|
   | 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诊断代码
Debugging诊断代码支持如下功能：
- 线程分析支持显示该应用的所有线程和查看线程的堆栈信息。通过Debugging诊断线程，帮助用户快速定位耗时较高的线程。
- 方法分析支持检查正在运行的方法的耗时明细、调用来源以及方法源码。通过Debugging诊断方法，帮助用户快速定位问题的根本原因，以及问题线下无法复现或日志缺失等场景。
- 对象分析用于分析某个对象内部状态，并支持查看对象参数值和详细信息。
 
#### 操作步骤
1. 登录[APM控制台](https://auth.huaweicloud.com/authui/login.html?service=https://console.huaweicloud.com/console/#/login)。
2. 单击左侧![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002518176184.png)，选择"管理与监管\> 应用性能管理 APM"，进入APM服务页面。
3. 在左侧导航栏选择"性能监控 \>组件列表"，进入组件列表页面。
4. 在左侧筛选栏中，选择"区域"以及"所属应用"。
5. 单击"组件"列，某一个组件名称，进入该组件指标项详情页。
6. 单击"Debugging诊断"，切换至Debugging诊断页签。 
   图1组件Debugging诊断   
   ![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002518336080.png "点击放大")
   
   
7. 进入Debugging诊断页签后，您可以根据需要执行如下操作： 
   - 线程分析 由于线程分析获取方法以及对象的实时参数，因此线程的状态等相关信息可能会产生变化。
     1. 切换至Debugging诊断页签。默认展示"线程分析"页面。
        图2组件Debugging诊断-线程分析   
        ![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002549695945.png "点击放大") 
     
     2. 在实例的下拉菜单中，选择一个实例，可以查看此实例下所有线程的线程名称、CPU使用率、线程数量。您还可以根据需要执行以下操作：
        - 查询阻塞源线程：在线程分析页面的右上角，单击"查询阻塞源线程"按钮，查看阻塞源线程的具体信息。
        
        - 重新执行：单击"重新执行"，重新执行查询操作。
        
        - 搜索线程：在搜索栏中，输入线程名称，单击![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002518176182.png "点击放大")，查看线程信息。
        
        - 查看线程状态：支持按照NEW、BLOCKED、WAITING、TIMED_WAITING、TERMINATED、RUNNABLE分类，查看此实例下线程的状态。
         
     
     3. 单击线程名称前![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002549815933.png)，查看该线程分析信息。
        单击操作列的"查询堆栈"按钮，可以查看实时堆栈跟踪信息。如果"查询堆栈"按钮置灰，表示内部线程不支持查询堆栈的操作。
        图3组件Debugging诊断-线程分析信息   
        ![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002549695933.png "点击放大") 
     
     4. 单击操作列"查询堆栈"按钮，获取堆栈跟踪信息。如果"查询堆栈"按钮置灰，表示内部线程不支持查询堆栈的操作。
        图4组件Debugging诊断-线程分析查询堆栈   
        ![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002518336084.png "点击放大") 
     
     5. 单击"关闭"，展示"线程分析"页面。
      
   
   - 方法分析
     1. 单击"方法分析"，进入方法分析页签。
     
     2. 在"请输入类名"对话框中，输入类型。单击![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002518336088.png)，在下拉菜单中，选中类名。
        单击"请选择方法名"对话框，选择方法名。单击"确认"，页面展示该方法的某一次执行的信息。
        图5组件Debugging诊断-方法分析   
        ![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002518336086.png "点击放大")
        - 页面左侧展示该方法的执行记录，包括：耗时明细、调用来源以及方法源码。
          1. 耗时明细展示调用方法，耗时时间，"下钻"操作。
          
          2. 单击"下钻"展示某个调用方法的详细信息。
           
        
        - 页面右侧展示默认观测项目，包括：Parameters、Return Object、Thrown Exception以及Target。
        
        - 选择重载方法：在下拉菜单中，重新选择一个方法。
        
        - 设置过滤条件：设置方法执行条件，过滤出符合条件的方法记录。
          图6组件Debugging诊断-方法分析设置过滤条件   
          ![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002518176186.png "点击放大")
          1. 过滤项：在下拉菜单中选择或手动输入过滤项。
          
          2. 选择过滤条件：在下拉菜单中选择过滤条件。
          
          3. 请输入过滤项的值：手动输入过滤项的值。
          
          4. 单击"添加"，过滤条件会显示在当前对话框。
          
          5. 单击"提交"，完成设置。
           
         
      
   
   - 对象分析
     1. 单击"对象分析"，进入对象分析页签。
        图7组件Debugging诊断-对象分析   
        ![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002549815939.png "点击放大") 
     
     2. 输入类名，选择实例后，单击"确认"，展示该实例中当前字段的实时取值。包括：类型、字段名以及详情。
     
     3. 单击详情列的"查看详情"，页面右侧区域展示该字段的详细信息。
      
   
   
   
   
了解"Debugging诊断"的更多内容，请参见[通过Debugging诊断代码](https://support.huaweicloud.com/usermanual-apm2/apm_07_0215.html)。
