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/options.html

488 lines
24 KiB
HTML

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="zh-CN" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="zh-CN" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>options &mdash; Arthas 3.6.2 文档</title>
<link rel="shortcut icon" href="_static/favicon.ico"/>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/overrides.css" type="text/css" />
<link rel="index" title="索引" href="genindex.html" />
<link rel="search" title="搜索" href="search.html" />
<link rel="next" title="help" href="help.html" />
<link rel="prev" title="auth" href="auth.html" />
<script>
if (window.location.href.startsWith("https://alibaba.github.io/arthas/")) {
window.location.href = "https://arthas.aliyun.com/doc/" + window.location.href.substr("https://alibaba.github.io/arthas/".length);
}
</script>
<script src="_static/center_page.js"></script>
<link rel="stylesheet" href="https://g.alicdn.com/code/lib/highlight.js/9.13.1/styles/github.min.css">
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Arthas
</a>
<div class="version">
3.6.2
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference external" href="https://arthas.aliyun.com/">首页</a></li>
<li class="toctree-l1"><a class="reference external" href="https://arthas.aliyun.com/doc/en/">English Docs</a></li>
<li class="toctree-l1"><a class="reference external" href="https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn">在线教程(katacoda)</a></li>
<li class="toctree-l1"><a class="reference external" href="https://start.aliyun.com/handson-lab?category=arthas">在线教程(阿里云)</a></li>
<li class="toctree-l1"><a class="reference internal" href="install-detail.html">安装</a></li>
<li class="toctree-l1"><a class="reference internal" href="download.html">下载</a></li>
<li class="toctree-l1"><a class="reference internal" href="quick-start.html">快速入门</a></li>
<li class="toctree-l1"><a class="reference internal" href="advanced-use.html">进阶使用</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="commands.html">命令列表</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="dashboard.html">dashboard</a></li>
<li class="toctree-l2"><a class="reference internal" href="thread.html">thread</a></li>
<li class="toctree-l2"><a class="reference internal" href="jvm.html">jvm</a></li>
<li class="toctree-l2"><a class="reference internal" href="memory.html">memory</a></li>
<li class="toctree-l2"><a class="reference internal" href="sysprop.html">sysprop</a></li>
<li class="toctree-l2"><a class="reference internal" href="sysenv.html">sysenv</a></li>
<li class="toctree-l2"><a class="reference internal" href="vmoption.html">vmoption</a></li>
<li class="toctree-l2"><a class="reference internal" href="perfcounter.html">perfcounter</a></li>
<li class="toctree-l2"><a class="reference internal" href="logger.html">logger</a></li>
<li class="toctree-l2"><a class="reference internal" href="mbean.html">mbean</a></li>
<li class="toctree-l2"><a class="reference internal" href="getstatic.html">getstatic</a></li>
<li class="toctree-l2"><a class="reference internal" href="ognl.html">ognl</a></li>
<li class="toctree-l2"><a class="reference internal" href="sc.html">sc</a></li>
<li class="toctree-l2"><a class="reference internal" href="sm.html">sm</a></li>
<li class="toctree-l2"><a class="reference internal" href="dump.html">dump</a></li>
<li class="toctree-l2"><a class="reference internal" href="heapdump.html">heapdump</a></li>
<li class="toctree-l2"><a class="reference internal" href="vmtool.html">vmtool</a></li>
<li class="toctree-l2"><a class="reference internal" href="jad.html">jad</a></li>
<li class="toctree-l2"><a class="reference internal" href="classloader.html">classloader</a></li>
<li class="toctree-l2"><a class="reference internal" href="mc.html">mc</a></li>
<li class="toctree-l2"><a class="reference internal" href="retransform.html">retransform</a></li>
<li class="toctree-l2"><a class="reference internal" href="redefine.html">redefine</a></li>
<li class="toctree-l2"><a class="reference internal" href="monitor.html">monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="watch.html">watch</a></li>
<li class="toctree-l2"><a class="reference internal" href="trace.html">trace</a></li>
<li class="toctree-l2"><a class="reference internal" href="stack.html">stack</a></li>
<li class="toctree-l2"><a class="reference internal" href="tt.html">tt</a></li>
<li class="toctree-l2"><a class="reference internal" href="profiler.html">profiler</a></li>
<li class="toctree-l2"><a class="reference internal" href="cat.html">cat</a></li>
<li class="toctree-l2"><a class="reference internal" href="echo.html">echo</a></li>
<li class="toctree-l2"><a class="reference internal" href="grep.html">grep</a></li>
<li class="toctree-l2"><a class="reference internal" href="base64.html">base64</a></li>
<li class="toctree-l2"><a class="reference internal" href="tee.html">tee</a></li>
<li class="toctree-l2"><a class="reference internal" href="pwd.html">pwd</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth.html">auth</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">options</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id1">查看所有的options</a></li>
<li class="toctree-l3"><a class="reference internal" href="#option">获取option的值</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">设置指定的option</a></li>
<li class="toctree-l3"><a class="reference internal" href="#unsafe-jdk-package">打开unsafe开关支持jdk package下的类</a></li>
<li class="toctree-l3"><a class="reference internal" href="#strict-ognl">关闭strict模式允许在ognl表达式里设置对象属性</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#arthas">Arthas 基础命令</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="web-console.html">WebConsole</a></li>
<li class="toctree-l1"><a class="reference internal" href="tunnel.html">Arthas Tunnel</a></li>
<li class="toctree-l1"><a class="reference internal" href="http-api.html">Http API</a></li>
<li class="toctree-l1"><a class="reference internal" href="docker.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="spring-boot-starter.html">Arthas Spring Boot Starter</a></li>
<li class="toctree-l1"><a class="reference internal" href="idea-plugin.html">IDEA 插件</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/issues?q=label%3Auser-case">用户案例</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ/常见问题</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas">Star me at GitHub</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/blob/master/CONTRIBUTING.md#">编译调试/参与贡献</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/releases">Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact-us.html">QQ群/钉钉群</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Arthas</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li><a href="commands.html">命令列表</a> &raquo;</li>
<li>options</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/alibaba/arthas/blob/master/site/src/site/sphinx/options.md" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="options">
<h1>options<a class="headerlink" href="#options" title="永久链接至标题"></a></h1>
<p><a class="reference external" href="https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&amp;id=command-options"><code class="docutils literal notranslate"><span class="pre">options</span></code>在线教程</a></p>
<blockquote>
<div><p>全局开关</p>
</div></blockquote>
<table border="1" class="docutils">
<thead>
<tr>
<th>名称</th>
<th>默认值</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>unsafe</td>
<td>false</td>
<td>是否支持对系统级别的类进行增强打开该开关可能导致把JVM搞挂请慎重选择</td>
</tr>
<tr>
<td>dump</td>
<td>false</td>
<td>是否支持被增强了的类dump到外部文件中如果打开开关class文件会被dump到<code>/${application working dir}/arthas-class-dump/</code>目录下,具体位置详见控制台输出</td>
</tr>
<tr>
<td>batch-re-transform</td>
<td>true</td>
<td>是否支持批量对匹配到的类执行retransform操作</td>
</tr>
<tr>
<td>json-format</td>
<td>false</td>
<td>是否支持json化的输出</td>
</tr>
<tr>
<td>disable-sub-class</td>
<td>false</td>
<td>是否禁用子类匹配,默认在匹配目标类的时候会默认匹配到其子类,如果想精确匹配,可以关闭此开关</td>
</tr>
<tr>
<td>support-default-method</td>
<td>true</td>
<td>是否支持匹配到default method默认会查找interface匹配里面的default method。参考 <a href="https://github.com/alibaba/arthas/issues/1105">#1105</a></td>
</tr>
<tr>
<td>save-result</td>
<td>false</td>
<td>是否打开执行结果存日志功能,打开之后所有命令的运行结果都将保存到<code>~/logs/arthas-cache/result.log</code></td>
</tr>
<tr>
<td>job-timeout</td>
<td>1d</td>
<td>异步后台任务的默认超时时间,超过这个时间,任务自动停止;比如设置 1d, 2h, 3m, 25s分别代表天、小时、分、秒</td>
</tr>
<tr>
<td>print-parent-fields</td>
<td>true</td>
<td>是否打印在parent class里的filed</td>
</tr>
<tr>
<td>verbose</td>
<td>false</td>
<td>是否打印更多详细信息</td>
</tr>
<tr>
<td>strict</td>
<td>true</td>
<td>是否启用strict模式</td>
</tr>
</tbody>
</table><div class="section" id="id1">
<h2>查看所有的options<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ options
LEVEL TYPE NAME VALUE SUMMARY DESCRIPTION
-------------------------------------------------------------------------------------------------------
0 boolea unsafe false Option to support sy This option enables to proxy functionality
n stem-level class of JVM classes. Due to serious security r
isk a JVM crash is possibly be introduced.
Do not activate it unless you are able to
manage.
1 boolea dump false Option to dump the e This option enables the enhanced classes t
n nhanced classes o be dumped to external file for further d
e-compilation and analysis.
1 boolea batch-re-tra true Option to support ba This options enables to reTransform classe
n nsform tch reTransform Clas s with batch mode.
s
2 boolea json-format false Option to support JS This option enables to format object outpu
n ON format of object t with JSON when -x option selected.
output
1 boolea disable-sub- false Option to control in This option disable to include sub class w
n class clude sub class when hen matching class.
class matching
1 boolea support-defa true Option to control in This option disable to include default met
n ult-method clude default method hod in interface when matching class.
in interface when c
lass matching
1 boolea save-result false Option to print comm This option enables to save each command&#x27;s
n and&#x27;s result to log result to log file, which path is ${user.
file home}/logs/arthas-cache/result.log.
2 String job-timeout 1d Option to job timeou This option setting job timeout,The unit c
t an be d, h, m, s for day, hour, minute, se
cond. 1d is one day in default
1 boolea print-parent true Option to print all This option enables print files in parent
n -fields fileds in parent cla class, default value true.
ss
1 boolea verbose false Option to print verb This option enables print verbose informat
n ose information ion, default value false.
1 boolea strict true Option to strict mod By default, strict mode is true, not allow
n e ed to set object properties. Want to set o
bject properties, execute `options strict
false`</pre></div>
</div>
</div>
<div class="section" id="option">
<h2>获取option的值<a class="headerlink" href="#option" title="永久链接至标题"></a></h2>
<div class="highlight-default notranslate"><pre class="literal-block">$ options json-format
LEVEL TYPE NAME VALUE SUMMARY DESCRIPTION
--------------------------------------------------------------------------------------------
2 bool json-format false Option to support This option enables to format object
ean JSON format of obj output with JSON when -x option selec
ect output ted.</pre>
</div>
<blockquote>
<div><p>默认情况下<code class="docutils literal notranslate"><span class="pre">json-format</span></code>为false如果希望<code class="docutils literal notranslate"><span class="pre">watch</span></code>/<code class="docutils literal notranslate"><span class="pre">tt</span></code>等命令结果以json格式输出则可以设置<code class="docutils literal notranslate"><span class="pre">json-format</span></code>为true。</p>
</div></blockquote>
</div>
<div class="section" id="id2">
<h2>设置指定的option<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<p>例如,想打开执行结果存日志功能,输入如下命令即可:</p>
<div class="highlight-default notranslate"><pre class="literal-block">$ options save-result true
NAME BEFORE-VALUE AFTER-VALUE
----------------------------------------
save-result false true</pre>
</div>
</div>
<div class="section" id="unsafe-jdk-package">
<h2>打开unsafe开关支持jdk package下的类<a class="headerlink" href="#unsafe-jdk-package" title="永久链接至标题"></a></h2>
<p>默认情况下,<code class="docutils literal notranslate"><span class="pre">watch</span></code>/<code class="docutils literal notranslate"><span class="pre">trace</span></code>/<code class="docutils literal notranslate"><span class="pre">tt</span></code>/<code class="docutils literal notranslate"><span class="pre">trace</span></code>/<code class="docutils literal notranslate"><span class="pre">monitor</span></code>等命令不支持<code class="docutils literal notranslate"><span class="pre">java.*</span></code> package下的类。可以设置<code class="docutils literal notranslate"><span class="pre">unsafe</span></code>为true则可以增强。</p>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ options unsafe true
NAME BEFORE-VALUE AFTER-VALUE
-----------------------------------
unsafe false true</pre></div>
</div>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ watch java.lang.invoke.Invokers callSiteForm
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 61 ms, listenerId: 1</pre></div>
</div>
</div>
<div class="section" id="strict-ognl">
<h2>关闭strict模式允许在ognl表达式里设置对象属性<a class="headerlink" href="#strict-ognl" title="永久链接至标题"></a></h2>
<blockquote>
<div><p>since 3.6.0</p>
</div></blockquote>
<p>对于新用户在编写ognl表达式时可能会出现误用。</p>
<p>比如对于<code class="docutils literal notranslate"><span class="pre">Student</span></code>判断年龄等于18时可能条件表达式会误写为<code class="docutils literal notranslate"><span class="pre">target.age=18</span></code>,这个表达式实际上是把当前对象的<code class="docutils literal notranslate"><span class="pre">age</span></code>设置为18了。正确的写法是<code class="docutils literal notranslate"><span class="pre">target.age==18</span></code></p>
<p>为了防止出现类似上面的误用Arthas默认启用<code class="docutils literal notranslate"><span class="pre">strict</span></code>模式,在<code class="docutils literal notranslate"><span class="pre">ognl</span></code>表达式里禁止更新对象的Property或者调用<code class="docutils literal notranslate"><span class="pre">setter</span></code>函数。</p>
<p><code class="docutils literal notranslate"><span class="pre">MathGame</span></code>为例,会出现以下的错误提示。</p>
<div class="highlight-default notranslate"><pre class="literal-block">$ watch demo.MathGame primeFactors &#x27;target&#x27; &#x27;target.illegalArgumentCount=1&#x27;
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 206 ms, listenerId: 1
watch failed, condition is: target.illegalArgumentCount=1, express is: target, By default, strict mode is true, not allowed to set object properties. Want to set object properties, execute `options strict false`, visit /Users/admin/logs/arthas/arthas.log for more details.</pre>
</div>
<p>用户如果确定要在<code class="docutils literal notranslate"><span class="pre">ognl</span></code>表达式里更新对象,可以执行<code class="docutils literal notranslate"><span class="pre">options</span> <span class="pre">strict</span> <span class="pre">false</span></code>,关闭<code class="docutils literal notranslate"><span class="pre">strict</span></code>模式。</p>
<ul class="simple">
<li><p>更多信息参考: https://github.com/alibaba/arthas/issues/2128</p></li>
</ul>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="help.html" class="btn btn-neutral float-right" title="help" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="auth.html" class="btn btn-neutral float-left" title="auth" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018-2020, Alibaba Middleware Group, and contributors
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
<div class="github-fork-ribbon-wrapper right">
<div class="github-fork-ribbon">
<a href="https://github.com/alibaba/arthas" target="_blank">Fork me at GitHub</a>
</div>
</div>
<script type="text/javascript" src="_static/add_badges.js"></script>
<script src="https://g.alicdn.com/code/lib/highlight.js/9.13.1/highlight.min.js"></script>
<script src="https://g.alicdn.com/code/lib/highlightjs-line-numbers.js/2.5.0/highlightjs-line-numbers.min.js"></script>
<script>
document.querySelectorAll('div.hljs > pre').forEach(function(block) {
hljs.highlightBlock(block);
hljs.lineNumbersBlock(block);
});
</script>
<script type="text/javascript">document.write(unescape("%3Cspan style='display:none;' id='cnzz_stat_icon_1279151497'%3E%3C/span%3E%3Cscript src='https://s4.cnzz.com/z_stat.php%3Fid%3D1279151497' type='text/javascript'%3E%3C/script%3E"));</script>
<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);
})();
</script>
</body>
</html>