Java 如何获得完整的stackTrace

Java 如何获得完整的stackTrace,java,stack-trace,Java,Stack Trace,我有一个意外的错误,它创建了stackTrace,里面有很多行和不同的库。如果从上到下阅读,可以看到除2-3第一个方法外调用的所有方法。看起来像 //Pseudo code method1_1(){ method2(); } method1_2(){ method2(); } method1_3(){ method2(); } method2(){ method3(); } method3(){ method4(); } method4(){ method5(); } method

我有一个意外的错误,它创建了stackTrace,里面有很多行和不同的库。如果从上到下阅读,可以看到除2-3第一个方法外调用的所有方法。看起来像

//Pseudo code
method1_1(){
method2();
}

method1_2(){
method2();
}

method1_3(){
method2();
}


method2(){
method3();
}

method3(){
method4();
}

method4(){
method5();
}

method5(){
method6();
}
StackTrace只显示3-6个方法,但不显示第二个方法,第一个方法中的哪一个调用第二个?我怎么知道?程序很大,日志每0,1-0001秒写入一次。这就是为什么对每种方法都进行日志记录是不好的。我无法模拟错误,它只会发生。我需要知道是什么方法引发了这个错误。在这个例子中,有6种方法,但还有更多

p.S.trace看起来是这样的

信息| 2019/04/11 14:23:20 |在com.company.smx.data.dao.impl.UserDaoServiceImpl.UpdateUserDaoServiceImpl.java:418 信息| 2019/04/11 14:23:20 |在com.company.smx.data.dao.impl.UserDaoServiceImpl$$FastClassBySpringCGLIB$$8732584e.invoke 信息| 2019/04/11 14:23:20 |位于org.springframework.cglib.proxy.MethodProxy.invokeMethodProxy.java:204 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpointCglibAopProxy.java:700 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:150 信息| 2019/04/11 14:23:20 |位于org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocationTransactionInterceptor.java:96 信息| 2019/04/11 14:23:20 |位于org.springframework.transaction.interceptor.TransactionSpectSupport.InvokewithIntransactionTransactionSpectSupport.java:260 信息| 2019/04/11 14:23:20 |位于org.springframework.transaction.interceptor.TransactionInterceptor.invokeTransactionInterceptor.java:94 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:172 信息| 2019/04/11 14:23:20 |在org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.interceptCglibAopProxy.java:633 信息| 2019/04/11 14:23:20 |在com.company.smx.data.dao.impl.UserDaoServiceImpl$$EnhancerBySpringCGLIB$$c376b217.updateUser 信息| 2019/04/11 14:23:20 |在sun.reflect.GeneratedMethodAccessor936.invokeUnknown源 信息| 2019/04/11 14:23:20 |在sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43 信息| 2019/04/11 14:23:20 |位于java.lang.reflect.Method.invokeMethod.java:498 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.support.AopUtils.invokeJoinPointUsingReflectionOputils.java:317 信息| 2019/04/11 14:23:20 |位于org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.doInvokeServiceInvoker.java:58 信息| 2019/04/11 14:23:20 |位于org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.invokeServiceInvoker.java:62 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:172 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceedDelegatingIntroductionInterceptor.java:132 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.support.DelegatingIntroductionInterceptor.invokeDelegatingIntroductionInterceptor.java:120 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:172 信息| 2019/04/11 14:23:20 |位于org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivilegedServiceTCCLInterceptor.java:56 信息| 2019/04/11 14:23:20 |位于org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invokeServiceTCCLInterceptor.java:39 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:172 信息| 2019/04/11 14:23:20 |位于org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invokeLocalBundleContextAdvice.java:59 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:172 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceedDelegatingIntroductionInterceptor.java:132 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.support.DelegatingIntroductionInterceptor.invokeDelegatingIntroductionInterceptor.java:120 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:172 信息| 2019/04/11 14:23:20 |位于org.springframework.aop.framework.jdDynamicApproxy.InvokeJDKDDynamicApproxy.java:204 信息| 2019/04/11 14:23:20 |位于com.sun.proxy.$Proxy564.updateUserUnknown Source 信息| 2019/04/11 14:23:20 |在com.company.smx.data.mobile.utils.Class2.method3Class2.java:58 信息| 2019/04/11 14:2 3:20 |在com.company.smx.data.mobile.utils.beans.Class3.method2Class3.java:177 信息| 2019/04/11 14:23:20 |在com.company.smx.data.mobile.utils.beans.Class3.lambda$method1$57Class3.java:117 信息| 2019/04/11 14:23:20 |位于java.util.stream.ForEachOps$ForEachOp$OfRef.acceptForEachOps.java:184 信息| 2019/04/11 14:23:20 |位于java.util.ArrayList$ArrayListSpliterator.forEachRemainingArrayList.java:1382 信息| 2019/04/11 14:23:20 |位于java.util.stream.AbstractPipeline.copyIntoAbstractPipeline.java:481 信息| 2019/04/11 14:23:20 |位于java.util.stream.ForEachOps$ForEachTask.computeForEachOps.java:291 信息| 2019/04/11 14:23:20 |位于java.util.concurrent.CountedCompleter.execCountedCompleter.java:731 信息| 2019/04/11 14:23:20 |位于java.util.concurrent.ForkJoinTask.doExecForkJoinTask.java:289 信息| 2019/04/11 14:23:20 |位于java.util.concurrent.ForkJoinPool$WorkQueue.runTaskForkJoinPool.java:1056 信息| 2019/04/11 14:23:20 |位于java.util.concurrent.ForkJoinPool.runworkerworksjoinpool.java:1692 INFO | 2019/04/11 14:23:20 |位于java.util.concurrent.ForkJoinWorkerThread.runForkJoinWorkerThread.java:157 这将打印Stacktrace的每一行,不会有12…更多


很可能这不是答案,但值得一看:

您能设置一个断点并逐步了解发生这种情况的地方吗?也许你能从中得到更多的信息不幸的是,我不能。它在任何地方都使用异步,如CompleteFuture、any reflection等。正如我所写的,它在第二秒内有很多日志。我猜不出什么时候它会碰巧捕获断点。你的堆栈跟踪完全正常。你为什么要删除你的答案?不应该尝试吗?如果我的追踪很好,如何知道第一种方法中的哪一种叫我第三、第四等方法?@Dred,我取消了它,我在回答中提到了一个链接,值得一看。我将在1小时内尝试,无论如何谢谢你给我一个机会,我不在乎失败票,直到它有助于学习,平和:嗯,该方法显示除ThreadWorker之外的所有方法。有没有机会知道,哪个方法强制该工作者工作?这意味着,从我的代码片段中,在java.util.concurrent.ForkJoinWorkerThread.runForkJoinWorkerThread.java:157行之前,我看不到任何方法
static void printLongerTrace(Throwable t){
    for(StackTraceElement e: t.getStackTrace())
        System.out.println(e);
}