Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以使为on-topic。
5年前关闭。
Improve this question
考虑一个发生Java应用程序错误并且您只能看到异常堆栈跟踪的情况。现在,如果您可以以某种方式重新创建此问题并打开重播日志,请使用此重播日志文件注入发生异常的完全相同的状态。我想知道是否存在可用于执行此类操作的Java库。还是需要设计我的应用程序来满足此类要求?
例如,考虑以下类和输出。
现在,在解析输出并使用反射后,我可以准确地重播div by 0场景。
所以想知道是否有一个提供这种功能的现有Java库?
**
**
想改善这个问题吗?更新问题,以使为on-topic。
5年前关闭。
Improve this question
考虑一个发生Java应用程序错误并且您只能看到异常堆栈跟踪的情况。现在,如果您可以以某种方式重新创建此问题并打开重播日志,请使用此重播日志文件注入发生异常的完全相同的状态。我想知道是否存在可用于执行此类操作的Java库。还是需要设计我的应用程序来满足此类要求?
例如,考虑以下类和输出。
现在,在解析输出并使用反射后,我可以准确地重播div by 0场景。
所以想知道是否有一个提供这种功能的现有Java库?
public class MyClass {
/**
* @param args
*/
public static void main(String[] args) {
MyClass myClass = new MyClass();
//Scenario 1
int div1 = myClass.div(1,2);
int div2 = myClass.div(1,0);
}
public int div(int firstArg,int secondArg){
log(firstArg + "," + secondArg);
return firstArg / secondArg;
}
private void log(String args){
StringBuffer sb = new StringBuffer();
sb.append("\nClass " + getClass().getName());
sb.append(" Method " + getMethodName(1));
sb.append(" Args " + args);
System.out.println("LOG # " + sb.toString());
}
// picked from http://stackoverflow.com/questions/442747/getting-the-name-of-the-current-executing-method
public static String getMethodName(final int depth)
{
final StackTraceElement[] ste = Thread.currentThread().getStackTrace();
return ste[ste.length - 1 - depth].getMethodName(); //Thank you Tom Tresansky
}
}
**
LOG #
Class MyClass Method div Args 1,2
Exception in thread "main" LOG #
Class MyClass Method div Args 1,0
java.lang.ArithmeticException: / by zero
at MyClass.div(MyClass.java:19)
at MyClass.main(MyClass.java:12)
**
最佳答案
CChronon是解决方案。
对于Chronon,您必须购买许可证。或者,您可以免费使用带有intellij idea Ultimate的Chronon插件。
http://blog.jetbrains.com/idea/2014/03/try-chronon-debugger-with-intellij-idea-13-1-eap/?_ga=1.102962688.1259655133.1391072454是您的解决方案!
09-05 02:54