greys-anatomy
greys-anatomy copied to clipboard
能不能支持在任何方法的随意一行中加一段代码?
public int test(){
int a = 100;
return a;
}
在int a=100;后面加一行代码 a = a*100;
-
GREYS永远不会尝试去修改任何方法的入参和返回值,他的核心职能只能是观察!
-
如果你想修改方法的行为,可以用JVM-SANDBOX中间件来实现
-
就算在JVM-SADNBOX中,想要在任何方法中随意增加一行代码,甚至修改一个变量从技术上都是可以,但是不会推荐你这样做。不过针对你这个CASE,变量
a
恰好是返回值,那么最终可以做到这样的效果public int _test$aop_by_sandbox(){ int a = 100; return a; } public int test() { return _test$aop_by_sandbox()*100; }
主要是为了在方法里面打印某个变量的值,现在只能看到入参数和返回值
哈哈,这个目前有考虑支持,但以我排查问题那么久的经验,一般局部变量都可以通过推演运算得到(已经明确了入参和返回值的情况下)。
所以,需要观察局部变量的值真的不是太多见呢
这个功能还是有必要的,sandbox还是有点厚重,定位问题时除了打印信息等,还有一个就是要快速规避,这个就需要这能力了
嗯?不是太明白,钉钉聊?
我还是比较赞同 @oldmanpushcart 的意见,greys 核心功能是观察,变量经过入参推算而得,你这要求有就等于做了一个远程debug功能了。