使用 HSDB 查看Spring AOP产生的代理类

前言

因为aop产生的代理类是运行期的,所以没法直接查看,需要使用HotSpot Debugger工具才能查看

使用步骤

1. 启动java程序,保持运行状态。获取程序pid

2.使用

java -classpath "$JAVA_HOME/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB
java -classpath "C:\Program Files\Java\jdk1.8.0_221\lib\sa-jdi.jar" sun.jvm.hotspot.HSDB
复制代码

命令启动hsdb

3.HSDB: File----->Attach to HotSpot Process----->填入pid

4.HSDB: Tools----->Class Browser

5.可以根据类的名字进行筛选,然后生成class字节码

扫描二维码关注公众号,回复: 9355805 查看本文章

注意事项

1.拿到字节码后反编译(丢入 idea自动反编译)即可查看代码

2.使用步骤2中如果发生如下错误

Exception in thread "Thread-1" java.lang.UnsatisfiedLinkError: Can't load library: C:\Program Files\Java\jre1.8.0_231\bin\sawindbg.dll
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.<clinit>(WindbgDebuggerLocal.java:661)
        at sun.jvm.hotspot.HotSpotAgent.setupDebuggerWin32(HotSpotAgent.java:567)
        at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:335)
        at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
        at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
        at sun.jvm.hotspot.HSDB.attach(HSDB.java:1184)
        at sun.jvm.hotspot.HSDB.access$1700(HSDB.java:53)
        at sun.jvm.hotspot.HSDB$25$1.run(HSDB.java:456)
        at sun.jvm.hotspot.utilities.WorkerThread$MainLoop.run(WorkerThread.java:66)
        at java.lang.Thread.run(Unknown Source)复制代码

就找一下sawindbg.dll然后放到C:\Program Files\Java\jre1.8.0_231\bin\目录即可


猜你喜欢

转载自juejin.im/post/5e521a8bf265da573a01f0e9