Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以使为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