2022全新版!Java分布式架构设计与开发实战无密fen
download链接:https://pan.baidu.com/s/1G7x6n8r0HLPS8aIJBdNDpw?pwd=a94a
提取码:a94a
--来自百度网盘超级会员V5的分享
通过--source-only参数可以只打印出在反编译的源代码:
jad --source-only com.example.demo.arthas.user.UserController
复制代码
动态执行代码 ognl 命令
在Arthas里,有一个单独的ognl命令,可以动态执行代码。这个有点秀啊😯😯😯
调用static函数
ognl '@java.lang.System@out.println("hello ognl")'
复制代码
获取静态类的静态字段
获取UserController类里的logger字段:
ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader @com.example.demo.arthas.user.UserController@logger
复制代码
通过-x参数控制返回值的展开层数。比如:
ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader -x 2 @com.example.demo.arthas.user.UserController@logger
复制代码
执行多行表达式,赋值给临时变量,返回一个List
ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'
复制代码
OGNL特殊用法请参考:github.com/alibaba/art…
OGNL表达式官方指南:commons.apache.org/proper/comm…
查看函数的参数/返回值/异常信息 watch 命令
watch demo.MathGame primeFactors returnObj
查看JVM信息 sysprop sysenv jvm dashboard
sysprop
sysprop :打印所有的System Properties信息。
指定单个key: sysprop user.dir。
通过grep过滤 :sysprop | grep user。
设置新的value: sysprop testKey testValue。
sysenv
sysenv 命令可以获取到环境变量。和sysprop命令类似。
jvm
jvm 命令会打印出JVM的各种详细信息。
dashboard
dashboard 命令可以查看当前系统的实时数据面板。
重置增强类 reset 命令
通过reset命令可以重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类。Arthas在 watch/trace 等命令时,实际上是修改了应用的字节码,插入增强的代码。显式执行 reset 命令,可以清除掉这些增强代码。
reset 还原指定类:
reset demo.MathGame
复制代码
还原所有增强类:
reset