有没有一种方法可以查看在Java中发送到方法中的参数值?
我目前正在为我的Java项目开发调试/错误处理工具。这是一个很长的过程,但是有没有一种方法可以打印出发送到方法中的参数的值呢 JVM在调用该方法时必须存储它们。不管怎样,我能抓住那些价值观吗 我的目标是调用我自己的printArguments()方法,不管我使用什么方法,它都应该以某种方式打印出参数 有人知道我怎么解决这个问题吗?或者我可以访问其他类似的信息?我希望在某个时间获得尽可能多的信息,例如变量有没有一种方法可以查看在Java中发送到方法中的参数值?,java,variables,error-handling,methods,printing,Java,Variables,Error Handling,Methods,Printing,我目前正在为我的Java项目开发调试/错误处理工具。这是一个很长的过程,但是有没有一种方法可以打印出发送到方法中的参数的值呢 JVM在调用该方法时必须存储它们。不管怎样,我能抓住那些价值观吗 我的目标是调用我自己的printArguments()方法,不管我使用什么方法,它都应该以某种方式打印出参数 有人知道我怎么解决这个问题吗?或者我可以访问其他类似的信息?我希望在某个时间获得尽可能多的信息,例如变量 如有任何意见,将不胜感激!:) 您需要再详细说明一下。您是否正在构建自己的从Java源代码到
如有任何意见,将不胜感激!:) 您需要再详细说明一下。您是否正在构建自己的从Java源代码到字节码的编译器?您是否正在构建自己的字节码解释器?您想挂接到现有的字节码解释器吗?答案完全取决于你所关注的阶段
如果您可以访问Java源代码,那么面向方面的编程可能适合您。您可以使用它将printArguments调用自动编织到每个普通的方法调用中。您需要详细说明一下。您是否正在构建自己的从Java源代码到字节码的编译器?您是否正在构建自己的字节码解释器?您想挂接到现有的字节码解释器吗?答案完全取决于你所关注的阶段
如果您可以访问Java源代码,那么面向方面的编程可能适合您。您可以使用它将printArguments调用自动编织到每个普通方法调用中。您应该能够使用AOP做一些事情
您应该能够使用AOP做一些事情
这听起来像是AOP的工作。如果您使用的是Spring,那么有一些简单的解决方案
如果您想手动滚动解决方案,您可以使用内省来获取所需的所有信息。我建议使用代理()包装要记录的类,并在代理中实现记录。这听起来像是AOP的工作。如果您使用的是Spring,那么有一些简单的解决方案 如果您想手动滚动解决方案,您可以使用内省来获取所需的所有信息。我建议使用代理()包装要记录的类,并在代理中实现记录 我目前正在为我的Java项目开发调试/错误处理工具 你在用电话吗?如果是这样的话,您可能可以获取,获取,并从当前。如果您不熟悉,请参见此 如果您想避免在调试模式下运行,那么(如其他人所述)是一个很好的解决方案。您可以使用和/或推出自己的解决方案,但这是一种更复杂的方法 我目前正在为我的Java项目开发调试/错误处理工具 你在用电话吗?如果是这样的话,您可能可以获取,获取,并从当前。如果您不熟悉,请参见此
如果您想避免在调试模式下运行,那么(如其他人所述)是一个很好的解决方案。您可以使用and/or滚动您自己的解决方案,但这是一种更复杂的方法。也许VisualVM就是您要寻找的 如果您使用的是sun的最新版本,那么您已经拥有visualvm
查看此链接了解更多概述:也许VisualVM就是您要寻找的 如果您使用的是sun的最新版本,那么您已经拥有visualvm
查看此链接了解更多概述:我可能有点模糊
这是一个标准的J2SE项目。使用标准编译器och运行时,没有什么特别之处。我希望尽可能多地使用J2SE库,而不是将新的库包含到项目中,或者使用像Eclipse这样的外部工具,因为它将远离非开发机器。我可能有点模糊
这是一个标准的J2SE项目。使用标准编译器och运行时,没有什么特别之处。我希望尽可能多地使用J2SE库,而不是将新的库包含到项目中,或者使用像Eclipse这样的外部工具,因为它将远离非开发机器。我现在读了一大堆,但我仍然不确定使用什么 VisualVM看起来像一个外部工具,我对此不感兴趣。为了使用代理,我必须用它包装项目中的所有类,我对此不感兴趣 这可以归结为JPDA和AOP,两者似乎都很复杂,然后他们应该:)我不确定这两者中哪一个更简单,我可以在同一个运行时使用,没有在调试模式下启动应用程序或创建一个新的OAP语言编写的东西 我希望有一种简单的方法来转储方法参数,而不知道方法、参数数量或类型 理论上,由于反射,我可以得到方法名和参数类型。但不是他们的价值观
任何回复都会有帮助。我现在读了一大堆,但我仍然不知道该用什么 VisualVM看起来像一个外部工具,我对此不感兴趣。为了使用代理,我必须用它包装项目中的所有类,我对此不感兴趣 这可以归结为JPDA和AOP,两者似乎都很复杂,然后他们应该:)我不确定这两者中哪一个更简单,我可以在同一个运行时使用,没有在调试模式下启动应用程序或创建一个新的OAP语言编写的东西 我希望有一种简单的方法来转储方法参数,而不知道方法、参数数量或类型 理论上,由于反射,我可以得到方法名和参数类型。但不是他们的价值观
任何响应都会很有帮助。如果您只想依赖JDK库(1.4+),我唯一能想到的就是向所有您的数据库添加日志记录
public void foo(String bar) {
log.debug("entering foo(" + bar + ")");
//...
}
void PrintValues(Object... params){
for(object o : params){
System.out.println(o.toString());
}
}
void SomeMethod(String p1, int p2, StringBuilder p3){
PrintValues(p1, p2, p3);
}