如何用JVM在运行时执行所有带有参数的方法调用,并且可能有可能更改方法参数,在调用方法之前做一些事情,而不更改JVM代码本身?
我已经完成了
但我是JVM如何在其中构建细节的新手,我的主要问题是 - 这是从这个代码开始的正确方法(Dtrace的代码)?也许你可以给我一篇文章来阅读?
而且 - 我可以在ART或dalvik做同样的事情吗? (不仅可以在JDWP的帮助下调试应用程序)。
还有一件事 - JMVTI速度太慢,调用处理程序需要近300μs。
编辑:
链接,我得到了:
https://code.google.com/p/droidbox/
http://mostly-about-java.blogspot.ru/2012/12/methodcallspy-building-own-method_3.html?m=1
答案 0 :(得分:0)
从技术上讲,JVM可以使用自己的javaagent。或者,您可以使用AspectJ框架及其Load Time Weaver来简化此过程。
检查this article以获取一些代码的示例和存储库:https://bitbucket.org/espinosa/methodcallspy0
不幸的是,Dalvik / ART并不支持javaagent,所以这只适用于真实的' JVM,但不在Android上。