update doc

pull/650/head
hengyunabc 6 years ago
parent fbf72ed390
commit 6321f481ec

@ -61,4 +61,6 @@ FROM openjdk:8-jdk-alpine
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
```
[https://hub.docker.com/r/hengyunabc/arthas](https://hub.docker.com/r/hengyunabc/arthas)
如果想指定版本可以查看具体的tags
[https://hub.docker.com/r/hengyunabc/arthas/tags](https://hub.docker.com/r/hengyunabc/arthas/tags)

@ -18,7 +18,7 @@ jad
### 使用参考
#### 编`java.lang.String`
#### 编`java.lang.String`
```java
$ jad java.lang.String
@ -52,7 +52,7 @@ CharSequence {
...
```
#### 反编指定的函数
#### 反编指定的函数
```java
$ jad demo.MathGame main
@ -75,7 +75,7 @@ public static void main(String[] args) throws InterruptedException {
Affect(row-cnt:1) cost in 228 ms.
```
#### 反编时指定ClassLoader
#### 反编时指定ClassLoader
> 当有多个 `ClassLoader` 都加载了这个类时,`jad` 命令会输出对应 `ClassLoader` 实例的 `hashcode`,然后你只需要重新执行 `jad` 命令,并使用参数 `-c <hashcode>` 就可以反编译指定 ClassLoader 加载的那个类了;

@ -1,7 +1,7 @@
mc
===
> Memory Compiler/内存编绎器,编绎`.java`文件生成`.class`。
> Memory Compiler/内存编译器,编译`.java`文件生成`.class`。
```bash
mc /tmp/Test.java
@ -19,4 +19,4 @@ mc -c 327a647b /tmp/Test.java
mc -d /tmp/output /tmp/ClassA.java /tmp/ClassB.java
```
绎生成`.class`文件之后,可以结合[`redefine`](redefine.md)命令实现热更新代码。
译生成`.class`文件之后,可以结合[redefine](redefine.md)命令实现热更新代码。

@ -104,7 +104,7 @@ $ thread 1 | grep 'main('
at demo.MathGame.main(MathGame.java:17)
```
## 5. 通过jad来反编Main Class
## 5. 通过jad来反编Main Class
```java
$ jad demo.MathGame
@ -226,7 +226,7 @@ ts=2018-11-28 19:22:35; [cost=29.969732ms] result=@ArrayList[
更多的功能可以查看[进阶使用](advanced-use.md)。
## 5. 退出arthas
## 7. 退出arthas
如果只是退出当前的连接,可以用`quit`或者`exit`命令。Attach到目标进程上的arthas还会继续运行端口会保持开放下次连接时可以直接连接上。

@ -33,8 +33,8 @@ mc /tmp/UserController.java -d /tmp
redefine /tmp/com/example/demo/arthas/user/UserController.class
```
* jad命令反编绎,然后可以用其它编绎比如vim来修改源码
* mc命令来内存编修改过的代码
* jad命令反编译,然后可以用其它编译比如vim来修改源码
* mc命令来内存编修改过的代码
* 用redefine命令加载新的字节码
### redefine的限制

@ -233,7 +233,8 @@ time: 2018-12-18 11:30:36
# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas</pre>
</div>
<p><a class="reference external" href="https://hub.docker.com/r/hengyunabc/arthas">https://hub.docker.com/r/hengyunabc/arthas</a></p>
<p>如果想指定版本可以查看具体的tags</p>
<p><a class="reference external" href="https://hub.docker.com/r/hengyunabc/arthas/tags">https://hub.docker.com/r/hengyunabc/arthas/tags</a></p>
</div>
</div>

@ -61,4 +61,6 @@ FROM openjdk:8-jdk-alpine
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
```
[https://hub.docker.com/r/hengyunabc/arthas](https://hub.docker.com/r/hengyunabc/arthas)
If you want to specify a version, you can view all the tags:
[https://hub.docker.com/r/hengyunabc/arthas/tags](https://hub.docker.com/r/hengyunabc/arthas/tags)

@ -19,4 +19,4 @@ The output directory can be specified with the `-d` option:
mc -d /tmp/output /tmp/ClassA.java /tmp/ClassB.java
```
After compiling the `.class` file, you can use the [`redefine`](redefine.md) command to re-define the loaded classes in JVM.
After compiling the `.class` file, you can use the [redefine](redefine.md) command to re-define the loaded classes in JVM.

@ -231,7 +231,8 @@ time: 2018-12-18 11:30:36
# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas</pre>
</div>
<p><a class="reference external" href="https://hub.docker.com/r/hengyunabc/arthas">https://hub.docker.com/r/hengyunabc/arthas</a></p>
<p>If you want to specify a version, you can view all the tags:</p>
<p><a class="reference external" href="https://hub.docker.com/r/hengyunabc/arthas/tags">https://hub.docker.com/r/hengyunabc/arthas/tags</a></p>
</div>
</div>

@ -209,7 +209,7 @@
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">mc -d /tmp/output /tmp/ClassA.java /tmp/ClassB.java
</pre></div>
</div>
<p>After compiling the <tt class="docutils literal">.class</tt> file, you can use the <a class="reference external" href="redefine.md"><tt class="docutils literal">redefine</tt></a> command to re-define the loaded classes in JVM.</p>
<p>After compiling the <tt class="docutils literal">.class</tt> file, you can use the <a class="reference internal" href="redefine.html"><span class="doc">redefine</span></a> command to re-define the loaded classes in JVM.</p>
</div>

File diff suppressed because one or more lines are too long

@ -109,9 +109,9 @@
<li class="toctree-l2 current"><a class="current reference internal" href="#">jad</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#">参数说明</a></li>
<li class="toctree-l3"><a class="reference internal" href="#">使用参考</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#java-lang-string"><tt class="docutils literal">java.lang.String</tt></a></li>
<li class="toctree-l4"><a class="reference internal" href="#">反编指定的函数</a></li>
<li class="toctree-l4"><a class="reference internal" href="#classloader">反编时指定ClassLoader</a></li>
<li class="toctree-l4"><a class="reference internal" href="#java-lang-string"><tt class="docutils literal">java.lang.String</tt></a></li>
<li class="toctree-l4"><a class="reference internal" href="#">反编指定的函数</a></li>
<li class="toctree-l4"><a class="reference internal" href="#classloader">反编时指定ClassLoader</a></li>
</ul>
</li>
</ul>
@ -241,7 +241,7 @@
<div class="section" id="">
<span id="id2"></span><h2>使用参考<a class="headerlink" href="#" title="永久链接至标题"></a></h2>
<div class="section" id="java-lang-string">
<span id="java-lang-string"></span><h3><tt class="docutils literal">java.lang.String</tt><a class="headerlink" href="#java-lang-string" title="永久链接至标题"></a></h3>
<span id="java-lang-string"></span><h3><tt class="docutils literal">java.lang.String</tt><a class="headerlink" href="#java-lang-string" title="永久链接至标题"></a></h3>
<div class="highlight-java notranslate"><div class="highlight hljs"><pre class="java">$ jad java.lang.String
ClassLoader:
@ -274,7 +274,7 @@ CharSequence {
</div>
</div>
<div class="section" id="">
<span id="id3"></span><h3>反编指定的函数<a class="headerlink" href="#" title="永久链接至标题"></a></h3>
<span id="id3"></span><h3>反编指定的函数<a class="headerlink" href="#" title="永久链接至标题"></a></h3>
<div class="highlight-java notranslate"><div class="highlight hljs"><pre class="java">$ jad demo.MathGame main
ClassLoader:
@ -297,7 +297,7 @@ Affect(row-cnt:1) cost in 228 ms.
</div>
</div>
<div class="section" id="classloader">
<span id="classloader"></span><h3>反编时指定ClassLoader<a class="headerlink" href="#classloader" title="永久链接至标题"></a></h3>
<span id="classloader"></span><h3>反编时指定ClassLoader<a class="headerlink" href="#classloader" title="永久链接至标题"></a></h3>
<blockquote>
<div>当有多个 <tt class="docutils literal">ClassLoader</tt> 都加载了这个类时,<tt class="docutils literal">jad</tt> 命令会输出对应 <tt class="docutils literal">ClassLoader</tt> 实例的 <tt class="docutils literal">hashcode</tt>,然后你只需要重新执行 <tt class="docutils literal">jad</tt> 命令,并使用参数 <tt class="docutils literal">-c <hashcode></tt> 就可以反编译指定 ClassLoader 加载的那个类了;</div></blockquote>
<div class="highlight-java notranslate"><div class="highlight hljs"><pre class="java">$ jad org.apache.log4j.Logger

@ -199,7 +199,7 @@
<div class="section" id="mc">
<span id="mc"></span><h1>mc<a class="headerlink" href="#mc" title="永久链接至标题"></a></h1>
<blockquote>
<div>Memory Compiler/内存编绎器,编绎<tt class="docutils literal">.java</tt>文件生成<tt class="docutils literal">.class</tt></div></blockquote>
<div>Memory Compiler/内存编译器,编译<tt class="docutils literal">.java</tt>文件生成<tt class="docutils literal">.class</tt></div></blockquote>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">mc /tmp/Test.java
</pre></div>
</div>
@ -211,7 +211,7 @@
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">mc -d /tmp/output /tmp/ClassA.java /tmp/ClassB.java
</pre></div>
</div>
<p>生成<tt class="docutils literal">.class</tt>文件之后,可以结合<a class="reference external" href="redefine.md"><tt class="docutils literal">redefine</tt></a>命令实现热更新代码。</p>
<p>生成<tt class="docutils literal">.class</tt>文件之后,可以结合<a class="reference internal" href="redefine.html"><span class="doc">redefine</span></a>命令实现热更新代码。</p>
</div>

@ -98,9 +98,9 @@
<li class="toctree-l2"><a class="reference internal" href="#arthas">2. 启动arthas</a></li>
<li class="toctree-l2"><a class="reference internal" href="#dashboard">3. 查看dashboard</a></li>
<li class="toctree-l2"><a class="reference internal" href="#threadarthas-demomain-class">4. 通过thread命令来获取到<tt class="docutils literal">arthas-demo</tt>进程的Main Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="#jadmain-class">5. 通过jad来反编Main Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="#jadmain-class">5. 通过jad来反编Main Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="#watch">6. watch</a></li>
<li class="toctree-l2"><a class="reference internal" href="#arthas">5. 退出arthas</a></li>
<li class="toctree-l2"><a class="reference internal" href="#arthas">7. 退出arthas</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="advanced-use.html">进阶使用</a></li>
@ -273,7 +273,7 @@ java.home /Library/Java/JavaVir
</div>
</div>
<div class="section" id="jadmain-class">
<span id="jadmain-class"></span><h2>5. 通过jad来反编Main Class<a class="headerlink" href="#jadmain-class" title="永久链接至标题"></a></h2>
<span id="jadmain-class"></span><h2>5. 通过jad来反编Main Class<a class="headerlink" href="#jadmain-class" title="永久链接至标题"></a></h2>
<div class="highlight-java notranslate"><div class="highlight hljs"><pre class="java">$ jad demo.MathGame
ClassLoader:
@ -393,7 +393,7 @@ ts=2018-11-28 19:22:35; [cost=29.969732ms] result=@ArrayList[
<p>更多的功能可以查看<a class="reference internal" href="advanced-use.html"><span class="doc">进阶使用</span></a></p>
</div>
<div class="section" id="arthas">
<span id="id2"></span><h2>5. 退出arthas<a class="headerlink" href="#arthas" title="永久链接至标题"></a></h2>
<span id="id2"></span><h2>7. 退出arthas<a class="headerlink" href="#arthas" title="永久链接至标题"></a></h2>
<p>如果只是退出当前的连接,可以用<tt class="docutils literal">quit</tt>或者<tt class="docutils literal">exit</tt>命令。Attach到目标进程上的arthas还会继续运行端口会保持开放下次连接时可以直接连接上。</p>
<p>如果想完全退出arthas可以执行<tt class="docutils literal">shutdown</tt>命令。</p>
</div>

@ -246,8 +246,8 @@ redefine /tmp/com/example/demo/arthas/user/UserController.class
</pre></div>
</div>
<ul class="simple">
<li>jad命令反编绎,然后可以用其它编绎比如vim来修改源码</li>
<li>mc命令来内存编修改过的代码</li>
<li>jad命令反编译,然后可以用其它编译比如vim来修改源码</li>
<li>mc命令来内存编修改过的代码</li>
<li>用redefine命令加载新的字节码</li>
</ul>
</div>

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save