<liclass="toctree-l1"><aclass="reference external"href="https://github.com/alibaba/arthas/issues?q=label%3Aquestion-answered">Questions and answers</a></li>
<liclass="toctree-l1"><aclass="reference external"href="https://github.com/alibaba/arthas">Fork me at GitHub</a></li>
<div>Print out the full call stack of the current method.</div></blockquote>
<p>Most often we know one method gets called, but we have no idea on which code path gets executed or when the method gets called since there are so many code paths to the target method. The command <codeclass="docutils literal notranslate"><spanclass="pre">stack</span></code> comes to rescue in this difficult situation.</p>
</table><p>There’s one thing worthy noting here is observation expression. The observation expression supports OGNL grammar, for example, you can come up a expression like this <codeclass="docutils literal notranslate"><spanclass="pre">"{params,returnObj}"</span></code>. All OGNL expressions are supported as long as they are legal to the grammar.</p>
<p>Thanks for <codeclass="docutils literal notranslate"><spanclass="pre">advice</span></code>’s data structure, it is possible to observe from varieties of different angles. Inside <codeclass="docutils literal notranslate"><spanclass="pre">advice</span></code> parameter, all necessary information for notification can be found.</p>
<p>Pls. refer to <aclass="reference internal"href="advice-class.html"><spanclass="doc">core parameters in expression</span></a> for more details.</p>
<ulclass="simple">
<li>Pls. also refer to <aclass="reference external"href="https://github.com/alibaba/arthas/issues/71">https://github.com/alibaba/arthas/issues/71</a> for more advanced usage</li>
<li>OGNL official site: <aclass="reference external"href="https://commons.apache.org/proper/commons-ognl/language-guide.html">https://commons.apache.org/proper/commons-ognl/language-guide.html</a></li>
<div>Notes: if there’s quotes character (say, <codeclass="docutils literal notranslate"><spanclass="pre">'</span></code>) in the expression, then the whole expression must be wrapped by quotes but with the other type (in this case, <codeclass="docutils literal notranslate"><spanclass="pre">"</span></code>) too. On contrary, it’s no need to quote the expression itself if there’s no quotes character found in it, but it is strongly recommended.</div></blockquote>
<p>Print out calling stack when the first method parameter is “K9-BD-01” for ‘getProductById()’ method:</p>
at com.alibaba.sample.petstore.web.store.module.screen.ItemList.execute<spanclass="o">(</span>ItemList.java:50<spanclass="o">)</span>
at com.alibaba.sample.petstore.web.store.module.screen.ItemList<spanclass="nv">$$</span>FastClassByCGLIB<spanclass="nv">$$</span>40b2f45f.invoke<spanclass="o">(</span><generated>:-1<spanclass="o">)</span>
at net.sf.cglib.reflect.FastMethod.invoke<spanclass="o">(</span>FastMethod.java:53<spanclass="o">)</span>
at com.alibaba.citrus.service.moduleloader.impl.adapter.MethodInvoker.invoke<spanclass="o">(</span>MethodInvoker.java:70<spanclass="o">)</span>
at com.alibaba.citrus.service.moduleloader.impl.adapter.DataBindingAdapter.executeAndReturn<spanclass="o">(</span>DataBindingAdapter.java:41<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PerformScreenValve.performScreenModule<spanclass="o">(</span>PerformScreenValve.java:111<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PerformScreenValve.invoke<spanclass="o">(</span>PerformScreenValve.java:74<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PerformActionValve.invoke<spanclass="o">(</span>PerformActionValve.java:73<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invoke<spanclass="o">(</span>PipelineImpl.java:210<spanclass="o">)</span>
at com.alibaba.sample.petstore.web.store.module.screen.ItemList.execute<spanclass="o">(</span>ItemList.java:50<spanclass="o">)</span>
at com.alibaba.sample.petstore.web.store.module.screen.ItemList<spanclass="nv">$$</span>FastClassByCGLIB<spanclass="nv">$$</span>40b2f45f.invoke<spanclass="o">(</span><generated>:-1<spanclass="o">)</span>
at net.sf.cglib.reflect.FastMethod.invoke<spanclass="o">(</span>FastMethod.java:53<spanclass="o">)</span>
at com.alibaba.citrus.service.moduleloader.impl.adapter.MethodInvoker.invoke<spanclass="o">(</span>MethodInvoker.java:70<spanclass="o">)</span>
at com.alibaba.citrus.service.moduleloader.impl.adapter.DataBindingAdapter.executeAndReturn<spanclass="o">(</span>DataBindingAdapter.java:41<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PerformScreenValve.performScreenModule<spanclass="o">(</span>PerformScreenValve.java:111<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PerformScreenValve.invoke<spanclass="o">(</span>PerformScreenValve.java:74<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PerformActionValve.invoke<spanclass="o">(</span>PerformActionValve.java:73<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invoke<spanclass="o">(</span>PipelineImpl.java:210<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.valve.ChooseValve.invoke<spanclass="o">(</span>ChooseValve.java:98<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.sample.petstore.web.store.module.screen.ItemList<spanclass="nv">$$</span>FastClassByCGLIB<spanclass="nv">$$</span>40b2f45f.invoke<spanclass="o">(</span><generated>:-1<spanclass="o">)</span>
at net.sf.cglib.reflect.FastMethod.invoke<spanclass="o">(</span>FastMethod.java:53<spanclass="o">)</span>
at com.alibaba.citrus.service.moduleloader.impl.adapter.MethodInvoker.invoke<spanclass="o">(</span>MethodInvoker.java:70<spanclass="o">)</span>
at com.alibaba.citrus.service.moduleloader.impl.adapter.DataBindingAdapter.executeAndReturn<spanclass="o">(</span>DataBindingAdapter.java:41<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PerformScreenValve.performScreenModule<spanclass="o">(</span>PerformScreenValve.java:111<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PerformScreenValve.invoke<spanclass="o">(</span>PerformScreenValve.java:74<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PerformActionValve.invoke<spanclass="o">(</span>PerformActionValve.java:73<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invoke<spanclass="o">(</span>PipelineImpl.java:210<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.valve.ChooseValve.invoke<spanclass="o">(</span>ChooseValve.java:98<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invoke<spanclass="o">(</span>PipelineImpl.java:210<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.valve.LoopValve.invokeBody<spanclass="o">(</span>LoopValve.java:105<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.valve.LoopValve.invoke<spanclass="o">(</span>LoopValve.java:83<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PageAuthorizationValve.invoke<spanclass="o">(</span>PageAuthorizationValve.java:105<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.CheckCsrfTokenValve.invoke<spanclass="o">(</span>CheckCsrfTokenValve.java:123<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.AnalyzeURLValve.invoke<spanclass="o">(</span>AnalyzeURLValve.java:126<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.SetLoggingContextValve.invoke<spanclass="o">(</span>SetLoggingContextValve.java:66<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.turbine.pipeline.valve.PrepareForTurbineValve.invoke<spanclass="o">(</span>PrepareForTurbineValve.java:52<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invokeNext<spanclass="o">(</span>PipelineImpl.java:157<spanclass="o">)</span>
at com.alibaba.citrus.service.pipeline.impl.PipelineImpl<spanclass="nv">$PipelineContextImpl</span>.invoke<spanclass="o">(</span>PipelineImpl.java:210<spanclass="o">)</span>
at com.alibaba.citrus.webx.impl.WebxControllerImpl.service<spanclass="o">(</span>WebxControllerImpl.java:43<spanclass="o">)</span>
at com.alibaba.citrus.webx.impl.WebxRootControllerImpl.handleRequest<spanclass="o">(</span>WebxRootControllerImpl.java:53<spanclass="o">)</span>
at com.alibaba.citrus.webx.support.AbstractWebxRootController.service<spanclass="o">(</span>AbstractWebxRootController.java:165<spanclass="o">)</span>
Built with <ahref="http://sphinx-doc.org/">Sphinx</a> using a <ahref="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <ahref="https://readthedocs.org">Read the Docs</a>.