- 我已经在 issues 里搜索,没有重复的issue。
背景
- 项目是一个Java实现的长连接有状态的服务器程序(比如游戏服务器端)
线上出现问题时,通常需要一种排查方式或者解决办法
输入一段代码,编译,加载,执行
代码段可以输入项目任何项目的公共api调用,然后输出内存数据排查
调试环境下,类似ide debug下可以执行一段表达式代码,然后execute
之前的线上环境,我们是直接用了如beanshell脚本,直接编写beanshell脚本,调用已有api获取数据,然后动态执行
疑问
想问一下arthas是否提供类似功能
思路
- 其实之前自己实现也比较简单。服务器端提供一个解析脚本接口,输入是.java(或者源文件字符串)。服务器端收到后,动态编译、加载、执行。
- 不过如果arthas直接支持就更好了
3条答案
按热度按时间x7yiwoj41#
如果用的框架是spring,可以 获取Spring Context 然后调用对应方法执行逻辑。
至于背景3,arthas好像并没有提供断点之类的功能,是否可以使用 watch 监控每个变量的值自行运算结果
pgx2nnw82#
其实需求就是动态执行代码,这段代码是完全自定义的。类似如 beanshell servlet ,和使用什么框架没有关系
3zwjbxry3#
支持直接执行代码,或者
.class
是没有难度的。主要是这个权限太大了,很容易出事,所以没有做。