Arthas stack (输出当前方法被调用的调用路径)

@[toc]
二、命令列表
2.3 monitor/watch/trace/stack/tt 相关
2.3.2 stack (输出当前方法被调用的调用路径)
使用场景:
stack
命令在 Arthas 中用于查看指定线程的调用栈信息,适用于以下场景:
故障排查:当应用出现性能问题或崩溃时,可以通过查看线程栈来定位问题源头。
死锁分析:监控线程状态,检查是否存在死锁或线程阻塞的情况。
性能优化:分析线程的执行路径,识别可能的性能瓶颈。
通过
stack
命令,开发者可以获取详细的线程执行信息,帮助快速定位和解决问题。
提示
输出当前方法被调用的调用路径。
很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。
参数说明:
这里重点要说明的是观察表达式,观察表达式的构成主要由 ognl 表达式组成,所以你可以这样写"{params,returnObj}"
,只要是一个合法的 ognl 表达式,都能被正常支持。
观察的维度也比较多,主要体现在参数 advice
的数据结构上。Advice
参数最主要是封装了通知节点的所有信息。
请参考表达式核心变量中关于该节点的描述。
举例 1:输出当前方法被调用的调用路径,入口很多从哪调用的?
基础语法
:stack 全路径类名 方法名
代码:
结论:可以看出当前有2个入口调用了该方法,入口1是CustomRealm.ldapLogin,入口2是SystemPersonalController.ldapServerConfigConnectionTest
本人其他相关文章链接
1.Arthas 全攻略:让调试变得简单2.Arthas dashboard(当前系统的实时数据面板)3.Arthas thread(查看当前JVM的线程堆栈信息)4.Arthas jvm(查看当前JVM的信息)5.Arthas sysprop(查看和修改JVM的系统属性)6.Arthas sysenv(查看JVM的环境变量)7.Arthas vmoption(查看和修改 JVM里诊断相关的option)8.Arthas getstatic(查看类的静态属性 )9.Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)10.Arthas logger(查看 logger 信息,更新 logger level)11.Arthas mbean(查看 Mbean 的信息)12.Arthas memory(查看 JVM 内存信息)13.Arthas ognl(执行ognl表达式)14.Arthas perfcounter(查看当前 JVM 的 Perf Counter 信息)15.Arthas vmtool(从 jvm 里查询对象,执行 forceGc)16.Arthas jad(字节码文件反编译成源代码 )17.Arthas mc(Memory Compiler/内存编译器 )18.Arthas redefine(加载外部的.class文件,redefine到JVM里 )19.Arthas classloader (查看 classloader 的继承树,urls,类加载信息)20.Arthas sc(查看JVM已加载的类信息 )21.Arthas sm(查看已加载类的方法信息 )22.Arthas monitor(方法执行监控)23.Arthas stack (输出当前方法被调用的调用路径)24.Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)25.Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)26.Arthas watch (方法执行数据观测)27.Arthas profiler(使用async-profiler对应用采样,生成火焰图)
版权声明: 本文为 InfoQ 作者【刘大猫】的原创文章。
原文链接:【http://xie.infoq.cn/article/ab01b560bb55d395482e09e36】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论