qunarcorp / bistoury

Bistoury是去哪儿网的java应用生产问题诊断工具,提供了一站式的问题诊断方案
GNU General Public License v3.0
4.01k stars 824 forks source link

在线debug功能查看到的加载类不全 #46

Closed hedleyyan closed 4 years ago

hedleyyan commented 5 years ago

比如 java 库中的 Integer 、String 类都看不到加载,程序的源码类也都看不到 Thread Dump 里的信息确认完整。堆对象统计信息确认完整。 请问是哪里出了问题,多谢

BTW , great job!

wikiwikiwiki commented 5 years ago

比如 java 库中的 Integer 、String 类都看不到加载,程序的源码类也都看不到 Thread Dump 里的信息确认完整。堆对象统计信息确认完整。 请问是哪里出了问题,多谢

BTW , great job!

修改这些核心类的风险太大了,我们过滤了所有由bootstrap classloader加载的类

hedleyyan commented 5 years ago

@wikiwikiwiki 明白,但是我们程序的源码类为何也看不到呢 image

启动时可以手动指定 attach 的 classloader 吗

wikiwikiwiki commented 5 years ago

@wikiwikiwiki 明白,但是我们程序的源码类为何也看不到呢 image

启动时可以手动指定 attach 的 classloader 吗

如果是脚本启动可以-c指定一个你的应用依赖的jar包中已被加载的类,不是脚本启动可以指定系统参数bistoury.app.lib.class(注意是要在attach前已经加载的类,如果是后面才加载的类,可以在在线debug类列表页面点击重新加载)。我们通过这个类来查找应用的classloader。默认是spring的DispatcherServlet。 在线debug能看到的类是你程序中已经加载的类,你这种情况是不是类没加载