Arthas-初识常用命令

1,044 阅读2分钟

前言

如何下载、安装、启动 Arthas 可点击此处Arthas在Docker容器中的使用-环境搭建Arthas 官网

1.dashboard 仪表板

  • ctrl+c 中断执行,退出仪表板
  • cls 清理当前页面,类似 clear
  • Tab 键,可自动补全 arthas 命令

image.png

2.thread 查看线程

  • thread 查看当前进程的所有线程image.png
  • thread ID 查看指定线程ID的线程image.png
  • thread -n 3 展示当前最忙的前3个线程并打印堆栈信息image.png
  • thread -b 找出当前阻塞其它线程的线程,排查死锁image.png
  • thread -i 1000 -n 3 指定采样时间间隔,并展示最忙碌的3个线程image.png
  • thread --state 线程状态 查看处于锁定状态的线程image.png

3.jad 包名.类名 反编译 (需要类被加载到JVM中)

  • jad 包名.类名 包含有类加载器+位置+源码 image.png
  • jad 包名.类名 --source-only 只包含反编译后的源码image.png
  • jad 包名.类名 方法名 反编译指定的方法image.png
  • jad 包名.类名 > 存放路径名 反编译类,并存放在指定的文件下image.png

4.watch 观察指定方法的调用情况

  • watch 包名.类名 方法名 "{params,returnObj}" -x 2,监视方法出参和返回值,-x表示指定输出结果的属性遍历深度,默认为1,params表示所有参数数组,returnObject表示返回值image.png
  • watch 包名.类名 方法名 "{params,returnObj}" -x 2 -b 观察方法入参,-b表示在方法调用之前观察,此时没有返回值-e表示在方法异常之后观察,-s表示在方法返回之后观察,-f表示方法结束之后(正常返回和异常返回)观察image.png
  • watch 包名.类名 方法名 "target" -x 2观察当前对象中的所有属性,target表示当前对象image.png
  • watch 包名.类名 方法名 "target.field_name" -x 2 观察当前对象中的指定属性 target.field_name指定对象中的某个属性image.png
  • watch 包名.类名 方法名 "{params,target,returnObj}" -x 2 -b -s -n 2 同时观察方法调用前和方法返回后,参数-n 2表示只执行两次。params表示参数,target表示执行方法的对象,returnObj表示返回值image.png

5.退出 arthas

  • quitexit 只是退出当前连接,端口会保持开放
  • stop 结束会话,完全退出 arthas