我需要弄清楚如何在程序运行时查看java方法的值。 我无法更改正在运行的代码,并且我不想阻止代码的运行(因此在eclipse中使用调试模式不在表中)。 我只是想告诉一个分析器或类似的东西,打印每次调用时特定方法接收的所有参数。
有没有办法实现这个目标?
谢谢:)
答案 0 :(得分:4)
在您的情况下,您应该使用AOP。使用自定义代码包装您的方法并记录其所有调用。在一个项目中,我们使用AspectJ来记录方法执行时间以进行分析。
答案 1 :(得分:1)
也许你可以使用像Decorator这样的东西。 假设你有一个类,你想要分析一个方法,如下所示:
public class Example {
public void doSomething(parameters) {
doSomething;
}
}
您可以扩展此类并添加用于分析方法的行为。 所以你可以这样做:
public class FilePrinterExample extends Example{
@Override
public void doSomething(parameters) {
for each parameters do
//print on file or what you want
super.doSomething(parameters);
}
}
我使用了一些伪代码,希望我很清楚。
答案 2 :(得分:1)
JProfiler可以做到这一点。为所需方法创建方法触发器,并向其添加“Print方法调用操作”:
如果您需要更大的灵活性,this screencast会演示如何使用“运行拦截器脚本”来从正在运行的应用程序中提取内部状态。
免责声明:我公司开发JProfiler。