4

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

有没有办法做到这一点?

感谢 :)

4

3 回答 3

4

在你的情况下,你应该使用AOP。用自定义代码包装您的方法并记录其所有调用。在一个项目中,我们使用 AspectJ 记录方法执行时间以进行分析。

于 2013-03-20T17:08:41.337 回答
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);
      }
    }

我使用了一些伪代码,希望我很清楚。

于 2013-03-20T16:46:02.227 回答
1

JProfiler可以做到这一点。为所需的方法创建一个方法触发器并向其添加“打印方法调用操作”:

在此处输入图像描述

如果您需要更大的灵活性,此截屏视频展示了如何使用“运行拦截器脚本”从正在运行的应用程序中提取内部状态。

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

于 2013-03-20T20:56:05.137 回答