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

Java 在程序运行时获取方法参数的值,java,profiling,Java,Profiling,我需要弄清楚如何在程序运行时查看java方法的值。 我不能更改正在运行的代码,也不想阻止代码的运行(因此在eclipse中使用调试模式是不可能的)。 我只想告诉分析器或类似的东西,打印特定方法每次调用时接收的所有参数 有没有办法做到这一点 谢谢:)也许你可以用一个类似的。 假设您有一个类,其中包含要分析的方法,如下所示: public class Example { public void doSomething(parameters) { doSomet

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

有没有办法做到这一点


谢谢:)

也许你可以用一个类似的。 假设您有一个类,其中包含要分析的方法,如下所示:

    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);
      }
    }

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

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

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

如果您需要更大的灵活性,将演示如何使用“运行侦听器脚本”从正在运行的应用程序中提取内部状态


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

您是在谈论要返回的数据类型、参数名称还是两者?这些参数的值。如果我是正确的,这将要求我重新编译代码,我不能这样做。不,不会。如果不能向类添加注释,则可以使用xml配置。更好地探索AOP。谢谢,我会看一看。它有试用期还是演示版?是的,它有10天的试用期,功能齐全,你可以从网站上下载。