jad
将jvm中实际运行的类字节码反编译成java代码,便于业务理解
命令选项
命令选项 | 描述 |
---|---|
-c, --code <hash> | 指定ClassLoader的哈希值 |
--classLoaderClass <class-name> | 指定ClassLoader的类名 |
--hideUnicode | 隐藏unicode,默认false |
--lineNumber <boolean> | 显示行号,默认true |
-E, --regex | 开启正则表达式匹配,默认是通配符匹配 |
--source-only | 只输出源码 |
-h, --help | 帮助 |
<class-pattern> | 类模式字符串 |
<method-name> | 方法名 |
实例
bash
# 简单反编译 包含ClassLoader、Location、源码信息
[arthas@14064]$ jad -c 435181e6 com.alibaba.arthas.deps.ZZZ
ClassLoader:
+-com.taobao.arthas.agent.ArthasClassloader@435181e6
+-jdk.internal.loader.ClassLoaders$PlatformClassLoader@782458af
Location:
/C:/Users/A/.arthas/lib/3.6.7/arthas/arthas-core.jar
/*
* Decompiled with CFR.
*/
package com.alibaba.arthas.deps;
public class ZZZ {
}
Affect(row-cnt:1) cost in 19 ms.
# 指定方法源码
[arthas@14064]$ jad --source-only java.lang.String length
@Override
public int length() {
/*1479*/ return this.value.length >> this.coder();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26