You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arthas/doc/quick-start.html

206 lines
100 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
3 years ago
<meta name="generator" content="VuePress 2.0.0-beta.51">
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html, body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme');
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
document.documentElement.classList.toggle('dark', true);
}
</script>
3 years ago
<link rel="icon" href="/images/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:title" content="Arthas"><meta property="og:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image" content="/images/arthas_mate_image.png"><meta property="og:description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="600"><meta property="twitter:image:src" content="/images/arthas_mate_image.png"><meta property="twitter:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta itemprop="name" content="Arthas"><meta itemprop="image" content="/images/arthas_mate_image.png"><meta itemprop="description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
2 years ago
</script><meta name="aes-config" content="pid=xux-opensource&user_type=101&uid=&username=&dim10=arthas"><script src="//g.alicdn.com/alilog/mlog/aplus_v2.js" id="beacon-aplus" exparams="clog=o&aplus&sidx=aplusSidx&ckx=aplusCkx"></script><script src="//g.alicdn.com/aes/??tracker/1.0.34/index.js,tracker-plugin-pv/2.4.5/index.js,tracker-plugin-event/1.2.5/index.js,tracker-plugin-jserror/1.0.13/index.js,tracker-plugin-api/1.1.14/index.js,tracker-plugin-perf/1.1.8/index.js,tracker-plugin-eventTiming/1.0.4/index.js"></script><title>快速入门 | arthas</title><meta name="description" content="arthas 使用文档">
2 years ago
<link rel="modulepreload" href="/assets/app.e2a14028.js"><link rel="modulepreload" href="/assets/quick-start.html.6a5ce5b4.js"><link rel="modulepreload" href="/assets/quick-start.html.ec93254e.js"><link rel="prefetch" href="/assets/index.html.fb508fb7.js"><link rel="prefetch" href="/assets/index.html.496d2537.js"><link rel="prefetch" href="/assets/index.html.b8fa569a.js"><link rel="prefetch" href="/assets/advanced-use.html.9badac76.js"><link rel="prefetch" href="/assets/advice-class.html.c44e2db1.js"><link rel="prefetch" href="/assets/agent.html.a2fa633a.js"><link rel="prefetch" href="/assets/arthas-properties.html.2bd43f4a.js"><link rel="prefetch" href="/assets/arthas3.html.0c62d022.js"><link rel="prefetch" href="/assets/async.html.2ba5ce81.js"><link rel="prefetch" href="/assets/auth.html.cb7eedc8.js"><link rel="prefetch" href="/assets/base64.html.5dcb08a0.js"><link rel="prefetch" href="/assets/batch-support.html.fbf93544.js"><link rel="prefetch" href="/assets/cat.html.ced78e32.js"><link rel="prefetch" href="/assets/classloader.html.e74a1cf5.js"><link rel="prefetch" href="/assets/cls.html.6a37f7de.js"><link rel="prefetch" href="/assets/commands.html.9d3bd2f6.js"><link rel="prefetch" href="/assets/contact-us.html.13d6c32c.js"><link rel="prefetch" href="/assets/dashboard.html.c22cb3f3.js"><link rel="prefetch" href="/assets/docker.html.3a6ad7da.js"><link rel="prefetch" href="/assets/download.html.cf6fa224.js"><link rel="prefetch" href="/assets/dump.html.dae123e7.js"><link rel="prefetch" href="/assets/echo.html.7c20f80e.js"><link rel="prefetch" href="/assets/faq.html.8ddfb8fa.js"><link rel="prefetch" href="/assets/getstatic.html.81caebc4.js"><link rel="prefetch" href="/assets/grep.html.625b2ba8.js"><link rel="prefetch" href="/assets/groovy.html.1e90fb12.js"><link rel="prefetch" href="/assets/heapdump.html.2b4fd6d5.js"><link rel="prefetch" href="/assets/help.html.5dfbf9d1.js"><link rel="prefetch" href="/assets/history.html.ed2eb78b.js"><link rel="prefetch" href="/assets/http-api.html.7cda0410.js"><link rel="prefetch" href="/assets/idea-plugin.html.55289de2.js"><link rel="prefetch" href="/assets/install-detail.html.733f8b72.js"><link rel="prefetch" href="/assets/jad.html.8ec3b078.js"><link rel="prefetch" href="/assets/jfr.html.f9f2dcd5.js"><link rel="prefetch" href="/assets/jvm.html.16ff63b8.js"><link rel="prefetch" href="/assets/keymap.html.3317cd01.js"><link rel="prefetch" href="/assets/logger.html.00fe1bd5.js"><link rel="prefetch" href="/assets/manual-install.html.175af1d9.js"><link rel="prefetch" href="/assets/mbean.html.69ffbc4b.js"><link rel="prefetch" href="/assets/mc.html.910a55d4.js"><link rel="prefetch" href="/assets/memory.html.8c99cf72.js"><link rel="prefetch" href="/assets/monitor.html.50d615e9.js"><link rel="prefetch" href="/assets/ognl.html.e0326122.js"><link rel="prefetch" href="/assets/options.html.4d2fd6bb.js"><link rel="prefetch" href="/assets/perfcounter.html.a18a75a5.js"><link rel="prefetch" href="/assets/profiler.html.249f4976.js"><link rel="prefetch" href="/assets/pwd.html.5eaa6d9f.js"><link rel="prefetch" href="/assets/quit.html.b82d1f6c.js"><link rel="prefetch" href="/assets/redefine.html.022d56f8.js"><link rel="prefetch" href="/assets/release-notes.html.45aa39b3.js"><link rel="prefetch" href="/assets/reset.html.6cd1cd7f.js"><link rel="prefetch" href="/assets/retransform.html.25f5ce4b.js"><link rel="prefetch" href="/assets/save-log.html.c3bc5a5e.js"><link rel="prefetch" href="/assets/sc.html.9b6b2f17.js"><link rel="prefetch" href="/assets/session.html.7d83c2a2.js"><link rel="prefetch" href="/assets/sm.html.62bb65b6.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.6933c1e5.js"><link rel="prefetch" href="/assets/stack.html.15b08ed7.js"><link rel="prefetch" href="/assets/start-arthas.html.1a90c4af.js"><link rel="prefetch" href="/assets/stop.html.1ba96921.js"><link rel="prefetch" href="/assets/sysenv.html.7a1b9682.js"><link rel="prefetch" href="/assets/sysprop.html.6b2f64e3.js"><link rel="prefetch" href="/assets/tee.html.6ed1d7c0.js"><link rel="prefetch" href="/assets/thread.html.3c801
3 years ago
<link rel="stylesheet" href="/assets/style.da1934a3.css">
</head>
<body>
2 years ago
<div id="app"><!--[--><div class="theme-container"><!--[--><header class="navbar"><div class="toggle-sidebar-button" title="切换侧边栏" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class="" data-v-61144abc><!----><span class="site-name can-hide" data-v-61144abc>arthas</span><span class="navbar-version" data-v-61144abc>v3.6.7</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="首页"><!--[--><!--]--> 首页 <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="/doc/arthas-tutorials.html?language=cn&amp;id=arthas-basics" rel="noopener noreferrer" target="_blank" aria-label="在线教程"><!--[--><!--]--><span>在线教程</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/" class="router-link-active" aria-label="文档"><!--[--><!--]--> 文档 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/commands.md" class="" aria-label="命令列表"><!--[--><!--]--> 命令列表 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/download.md" class="" aria-label="下载"><!--[--><!--]--> 下载 <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="解决方案"><span class="title">解决方案</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="解决方案"><span class="title">解决方案</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a class="external-link" href="https://cn.aliyun.com/product/aliware/mse?spm=arthas.topbar.0.0.0" rel="noopener noreferrer" target="_blank" aria-label="微服务解决方案"><!--[--><!--]--><span>微服务解决方案</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a class="external-link" href="https://www.aliyun.com/aliware/txc?spm=arthas.topbar.0.0.0" rel="noopener noreferrer" target="_blank" aria-label="分布式事务解决方案"><!--[--><!--]--><span>分布式事务解决方案</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a class="external-link" href="https://www.aliyun.com/product/ahas?spm=artha
3 years ago
<span class="token function">java</span> <span class="token parameter variable">-jar</span> math-game.jar
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p><code>math-game</code>是一个简单的程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。</p><p><code>math-game</code>源代码:<a href="https://github.com/alibaba/arthas/blob/master/math-game/src/main/java/demo/MathGame.java" target="_blank" rel="noopener noreferrer">查看<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a></p><h2 id="_2-启动-arthas" tabindex="-1"><a class="header-anchor" href="#_2-启动-arthas" aria-hidden="true">#</a> 2. 启动 arthas</h2><p>在命令行下面执行(使用和目标进程一致的用户启动,否则可能 attach 失败):</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">curl</span> <span class="token parameter variable">-O</span> https://arthas.aliyun.com/arthas-boot.jar
<span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>执行该程序的用户需要和目标进程具有相同的权限。比如以<code>admin</code>用户来执行:<code>sudo su admin &amp;&amp; java -jar arthas-boot.jar</code><code>sudo -u admin -EH java -jar arthas-boot.jar</code></li><li>如果 attach 不上目标进程,可以查看<code>~/logs/arthas/</code> 目录下的日志。</li><li>如果下载速度比较慢,可以使用 aliyun 的镜像:<code>java -jar arthas-boot.jar --repo-mirror aliyun --use-http</code></li><li><code>java -jar arthas-boot.jar -h</code> 打印更多参数信息。</li></ul><p>选择应用 java 进程:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ $ <span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar
* <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>: <span class="token number">35542</span>
<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span>: <span class="token number">71560</span> math-game.jar
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><code>math-game</code>进程是第 2 个,则输入 2再输入<code>回车/enter</code>。Arthas 会 attach 到目标进程上,并输出日志:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Try to attach process <span class="token number">71560</span>
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Attach process <span class="token number">71560</span> success.
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> arthas-client connect <span class="token number">127.0</span>.0.1 <span class="token number">3658</span>
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O <span class="token punctuation">\</span> <span class="token operator">|</span> .--. <span class="token string">&#39;&#39;</span>--. .--<span class="token string">&#39;| &#39;</span>--<span class="token string">&#39; | / O \ &#39;</span> .-<span class="token string">&#39;
| .-. || &#39;</span>--<span class="token string">&#39;.&#39;</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> .--. <span class="token operator">||</span> .-. <span class="token operator">|</span><span class="token variable"><span class="token variable">`</span><span class="token builtin class-name">.</span> <span class="token variable">`</span></span>-.
<span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span><span class="token punctuation">\</span> <span class="token punctuation">\</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span>.-<span class="token string">&#39; |
`--&#39;</span> <span class="token variable"><span class="token variable">`</span>--&#39;<span class="token variable">`</span></span>--<span class="token string">&#39; &#39;</span>--<span class="token string">&#39; `--&#39;</span> <span class="token variable"><span class="token variable">`</span>--&#39; <span class="token variable">`</span></span>--<span class="token string">&#39;`--&#39;</span> <span class="token variable"><span class="token variable">`</span>--&#39;<span class="token variable">`</span></span>-----&#39;
wiki: https://arthas.aliyun.com/doc
version: <span class="token number">3.0</span>.5.20181127201536
pid: <span class="token number">71560</span>
time: <span class="token number">2018</span>-11-28 <span class="token number">19</span>:16:24
$
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="_3-查看-dashboard" tabindex="-1"><a class="header-anchor" href="#_3-查看-dashboard" aria-hidden="true">#</a> 3. 查看 dashboard</h2><p>输入<a href="/doc/dashboard.html" class="">dashboard</a>,按<code>回车/enter</code>,会展示当前进程的信息,按<code>ctrl+c</code>可以中断执行。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ dashboard
ID NAME GROUP PRIORI STATE %CPU TIME INTERRU DAEMON
<span class="token number">17</span> pool-2-thread-1 system <span class="token number">5</span> WAITIN <span class="token number">67</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">false</span>
<span class="token number">27</span> Timer-for-arthas-dashb system <span class="token number">10</span> RUNNAB <span class="token number">32</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">11</span> AsyncAppender-Worker-a system <span class="token number">9</span> WAITIN <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">9</span> Attach Listener system <span class="token number">9</span> RUNNAB <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">3</span> Finalizer system <span class="token number">8</span> WAITIN <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">2</span> Reference Handler system <span class="token number">10</span> WAITIN <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">4</span> Signal Dispatcher system <span class="token number">9</span> RUNNAB <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">26</span> as-command-execute-dae system <span class="token number">10</span> TIMED_ <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">13</span> job-timeout system <span class="token number">9</span> TIMED_ <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">1</span> main main <span class="token number">5</span> TIMED_ <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">false</span>
<span class="token number">14</span> nioEventLoopGroup-2-1 system <span class="token number">10</span> RUNNAB <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">false</span>
<span class="token number">18</span> nioEventLoopGroup-2-2 system <span class="token number">10</span> RUNNAB <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">false</span>
<span class="token number">23</span> nioEventLoopGroup-2-3 system <span class="token number">10</span> RUNNAB <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">false</span>
<span class="token number">15</span> nioEventLoopGroup-3-1 system <span class="token number">10</span> RUNNAB <span class="token number">0</span> <span class="token number">0</span>:0 <span class="token boolean">false</span> <span class="token boolean">false</span>
Memory used total max usage GC
heap 32M 155M 1820M <span class="token number">1.77</span>% gc.ps_scavenge.count <span class="token number">4</span>
ps_eden_space 14M 65M 672M <span class="token number">2.21</span>% gc.ps_scavenge.time<span class="token punctuation">(</span>m <span class="token number">166</span>
ps_survivor_space 4M 5M 5M s<span class="token punctuation">)</span>
ps_old_gen 12M 85M 1365M <span class="token number">0.91</span>% gc.ps_marksweep.count <span class="token number">0</span>
3 years ago
nonheap 20M 23M <span class="token parameter variable">-1</span> gc.ps_marksweep.time<span class="token punctuation">(</span> <span class="token number">0</span>
code_cache 3M 5M 240M <span class="token number">1.32</span>% ms<span class="token punctuation">)</span>
Runtime
os.name Mac OS X
os.version <span class="token number">10.13</span>.4
java.version <span class="token number">1.8</span>.0_162
java.home /Library/Java/JavaVir
tualMachines/jdk1.8.0
_162.jdk/Contents/Hom
e/jre
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="_4-通过-thread-命令来获取到math-game进程的-main-class" tabindex="-1"><a class="header-anchor" href="#_4-通过-thread-命令来获取到math-game进程的-main-class" aria-hidden="true">#</a> 4. 通过 thread 命令来获取到<code>math-game</code>进程的 Main Class</h2><p><code>thread 1</code>会打印线程 ID 1 的栈,通常是 main 函数的线程。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ thread <span class="token number">1</span> <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&#39;main(&#39;</span>
at demo.MathGame.main<span class="token punctuation">(</span>MathGame.java:17<span class="token punctuation">)</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="_5-通过-jad-来反编译-main-class" tabindex="-1"><a class="header-anchor" href="#_5-通过-jad-来反编译-main-class" aria-hidden="true">#</a> 5. 通过 jad 来反编译 Main Class</h2><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code>$ jad <span class="token class-name"><span class="token namespace">demo<span class="token punctuation">.</span></span>MathGame</span>
<span class="token class-name">ClassLoader</span><span class="token operator">:</span>
<span class="token operator">+</span><span class="token operator">-</span><span class="token class-name"><span class="token namespace">sun<span class="token punctuation">.</span>misc<span class="token punctuation">.</span></span>Launcher</span>$<span class="token class-name">AppClassLoader</span><span class="token annotation punctuation">@3d4eac69</span>
<span class="token operator">+</span><span class="token operator">-</span><span class="token class-name"><span class="token namespace">sun<span class="token punctuation">.</span>misc<span class="token punctuation">.</span></span>Launcher</span>$<span class="token class-name">ExtClassLoader</span><span class="token annotation punctuation">@66350f69</span>
<span class="token class-name">Location</span><span class="token operator">:</span>
<span class="token operator">/</span>tmp<span class="token operator">/</span>math<span class="token operator">-</span>game<span class="token punctuation">.</span>jar
<span class="token comment">/*
* Decompiled with CFR 0_132.
*/</span>
<span class="token keyword">package</span> <span class="token namespace">demo</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">PrintStream</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">ArrayList</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Iterator</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">List</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Random</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>concurrent<span class="token punctuation">.</span></span><span class="token class-name">TimeUnit</span></span><span class="token punctuation">;</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MathGame</span> <span class="token punctuation">{</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token class-name">Random</span> random <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">private</span> <span class="token keyword">int</span> illegalArgumentCount <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">InterruptedException</span> <span class="token punctuation">{</span>
<span class="token class-name">MathGame</span> game <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MathGame</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">do</span> <span class="token punctuation">{</span>
game<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
3 years ago
<span class="token class-name">TimeUnit</span><span class="token punctuation">.</span><span class="token constant">SECONDS</span><span class="token punctuation">.</span><span class="token function">sleep</span><span class="token punctuation">(</span><span class="token number">1L</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">InterruptedException</span> <span class="token punctuation">{</span>
<span class="token keyword">try</span> <span class="token punctuation">{</span>
<span class="token keyword">int</span> number <span class="token operator">=</span> random<span class="token punctuation">.</span><span class="token function">nextInt</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">List</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Integer</span><span class="token punctuation">&gt;</span></span> primeFactors <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">primeFactors</span><span class="token punctuation">(</span>number<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">MathGame</span><span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span>number<span class="token punctuation">,</span> primeFactors<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span><span class="token string">&quot;illegalArgumentCount:%3d, &quot;</span><span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>illegalArgumentCount<span class="token punctuation">)</span> <span class="token operator">+</span> e<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">print</span><span class="token punctuation">(</span><span class="token keyword">int</span> number<span class="token punctuation">,</span> <span class="token class-name">List</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Integer</span><span class="token punctuation">&gt;</span></span> primeFactors<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token class-name">StringBuffer</span> sb <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">StringBuffer</span><span class="token punctuation">(</span><span class="token string">&quot;&quot;</span> <span class="token operator">+</span> number <span class="token operator">+</span> <span class="token string">&quot;=&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Iterator</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Integer</span><span class="token punctuation">&gt;</span></span> iterator <span class="token operator">=</span> primeFactors<span class="token punctuation">.</span><span class="token function">iterator</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">while</span> <span class="token punctuation">(</span>iterator<span class="token punctuation">.</span><span class="token function">hasNext</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">int</span> factor <span class="token operator">=</span> iterator<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
sb<span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span>factor<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span><span class="token char">&#39;*&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>sb<span class="token punctuation">.</span><span class="token function">charAt</span><span class="token punctuation">(</span>sb<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token char">&#39;*&#39;</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
sb<span class="token punctuation">.</span><span class="token function">deleteCharAt</span><span class="token punctuation">(</span>sb<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>sb<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">public</span> <span class="token class-name">List</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Integer</span><span class="token punctuation">&gt;</span></span> <span class="token function">primeFactors</span><span class="token punctuation">(</span><span class="token keyword">int</span> number<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>number <span class="token operator">&lt;</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token operator">++</span><span class="token keyword">this</span><span class="token punctuation">.</span>illegalArgumentCount<span class="token punctuation">;</span>
<span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">IllegalArgumentException</span><span class="token punctuation">(</span><span class="token string">&quot;number is: &quot;</span> <span class="token operator">+</span> number <span class="token operator">+</span> <span class="token string">&quot;, need &gt;= 2&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token class-name">ArrayList</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Integer</span><span class="token punctuation">&gt;</span></span> result <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ArrayList</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Integer</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token keyword">while</span> <span class="token punctuation">(</span>i <span class="token operator">&lt;=</span> number<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>number <span class="token operator">%</span> i <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
result<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>
number <span class="token operator">/=</span> i<span class="token punctuation">;</span>
i <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token keyword">continue</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token operator">++</span>i<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> result<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token class-name">Affect</span><span class="token punctuation">(</span>row<span class="token operator">-</span>cnt<span class="token operator">:</span><span class="token number">1</span><span class="token punctuation">)</span> cost in <span class="token number">970</span> ms<span class="token punctuation">.</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="_6-watch" tabindex="-1"><a class="header-anchor" href="#_6-watch" aria-hidden="true">#</a> 6. watch</h2><p>通过<a href="/doc/watch.html" class="">watch</a>命令来查看<code>demo.MathGame#primeFactors</code>函数的返回值:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">watch</span> demo.MathGame primeFactors returnObj
Press Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class-cnt:1 , method-cnt:1<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">107</span> ms.
<span class="token assign-left variable">ts</span><span class="token operator">=</span><span class="token number">2018</span>-11-28 <span class="token number">19</span>:22:30<span class="token punctuation">;</span> <span class="token punctuation">[</span>cost<span class="token operator">=</span><span class="token number">1</span>.715367ms<span class="token punctuation">]</span> <span class="token assign-left variable">result</span><span class="token operator">=</span>null
<span class="token assign-left variable">ts</span><span class="token operator">=</span><span class="token number">2018</span>-11-28 <span class="token number">19</span>:22:31<span class="token punctuation">;</span> <span class="token punctuation">[</span>cost<span class="token operator">=</span><span class="token number">0</span>.185203ms<span class="token punctuation">]</span> <span class="token assign-left variable">result</span><span class="token operator">=</span>null
<span class="token assign-left variable">ts</span><span class="token operator">=</span><span class="token number">2018</span>-11-28 <span class="token number">19</span>:22:32<span class="token punctuation">;</span> <span class="token punctuation">[</span>cost<span class="token operator">=</span><span class="token number">19</span>.012416ms<span class="token punctuation">]</span> <span class="token assign-left variable">result</span><span class="token operator">=</span>@ArrayList<span class="token punctuation">[</span>
@Integer<span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">47</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">2675531</span><span class="token punctuation">]</span>,
<span class="token punctuation">]</span>
<span class="token assign-left variable">ts</span><span class="token operator">=</span><span class="token number">2018</span>-11-28 <span class="token number">19</span>:22:33<span class="token punctuation">;</span> <span class="token punctuation">[</span>cost<span class="token operator">=</span><span class="token number">0</span>.311395ms<span class="token punctuation">]</span> <span class="token assign-left variable">result</span><span class="token operator">=</span>@ArrayList<span class="token punctuation">[</span>
@Integer<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">317</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">503</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">887</span><span class="token punctuation">]</span>,
<span class="token punctuation">]</span>
<span class="token assign-left variable">ts</span><span class="token operator">=</span><span class="token number">2018</span>-11-28 <span class="token number">19</span>:22:34<span class="token punctuation">;</span> <span class="token punctuation">[</span>cost<span class="token operator">=</span><span class="token number">10</span>.136007ms<span class="token punctuation">]</span> <span class="token assign-left variable">result</span><span class="token operator">=</span>@ArrayList<span class="token punctuation">[</span>
@Integer<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">31</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">717593</span><span class="token punctuation">]</span>,
<span class="token punctuation">]</span>
<span class="token assign-left variable">ts</span><span class="token operator">=</span><span class="token number">2018</span>-11-28 <span class="token number">19</span>:22:35<span class="token punctuation">;</span> <span class="token punctuation">[</span>cost<span class="token operator">=</span><span class="token number">29</span>.969732ms<span class="token punctuation">]</span> <span class="token assign-left variable">result</span><span class="token operator">=</span>@ArrayList<span class="token punctuation">[</span>
@Integer<span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">29</span><span class="token punctuation">]</span>,
@Integer<span class="token punctuation">[</span><span class="token number">7651739</span><span class="token punctuation">]</span>,
<span class="token punctuation">]</span>
3 years ago
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>更多的功能可以查看<a href="/doc/advanced-use.html" class="">进阶使用</a></p><h2 id="_7-退出-arthas" tabindex="-1"><a class="header-anchor" href="#_7-退出-arthas" aria-hidden="true">#</a> 7. 退出 arthas</h2><p>如果只是退出当前的连接,可以用<code>quit</code>或者<code>exit</code>命令。Attach 到目标进程上的 arthas 还会继续运行,端口会保持开放,下次连接时可以直接连接上。</p><p>如果想完全退出 arthas可以执行<code>stop</code>命令。</p></div><!--[--><!--]--></div><footer class="page-meta right-menu-padding" data-v-fdd717e0><div class="meta-item edit-link"><a class="external-link meta-item-label" href="https://github.com/alibaba/arthas/edit/master/site/docs/doc/quick-start.md" rel="noopener noreferrer" target="_blank" aria-label="在 GitHub 上编辑此页"><!--[--><!--]--><span>在 GitHub 上编辑此页</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="meta-item contributors"><span class="meta-item-label">贡献者: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: hengyunabc@gmail.com">hengyunabc</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: geneq@hotmail.com">Gene</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: sergioescala@gmail.com">Sergio Escalante</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: northmorn@gmail.com">northmorn</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 260893248@qq.com">靳阳</span><!----><!--]--><!--]--></span></div></footer><nav class="page-nav right-menu-padding" data-v-fdd717e0><p class="inner"><span class="prev"><a href="/doc/" class="router-link-active" aria-label="简介"><!--[--><!--]--> 简介 <!--[--><!--]--></a></span><span class="next"><a href="/doc/install-detail.html" class="" aria-label="Arthas Install"><!--[--><!--]--> Arthas Install <!--[--><!--]--></a></span></p></nav><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
2 years ago
<script type="module" src="/assets/app.e2a14028.js" defer></script>
</body>
</html>