在程序运行时获取方法参数的值

时间:2013-03-20 16:33:11

标签: java profiling

我需要弄清楚如何在程序运行时查看java方法的值。 我无法更改正在运行的代码,并且我不想阻止代码的运行(因此在eclipse中使用调试模式不在表中)。 我只是想告诉一个分析器或类似的东西,打印每次调用时特定方法接收的所有参数。

有没有办法实现这个目标?

谢谢:)

3 个答案:

答案 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方法调用操作”:

enter image description here

如果您需要更大的灵活性,this screencast会演示如何使用“运行拦截器脚本”来从正在运行的应用程序中提取内部状态。

免责声明:我公司开发JProfiler。