如何在eclipse上显示完整的堆栈跟踪?

Luc*_*ore 41 java eclipse

我正在使用Eclipse来调试Java应用程序.代码中的某处我得到一个异常和堆栈跟踪:

Caused by: java.io.EOFException: The connection has been reset while reading the header
    at com.gemstone.gemfire.internal.cache.tier.sockets.Message.fetchHeader(Message.java:583)
    at com.gemstone.gemfire.internal.cache.tier.sockets.Message.readHeaderAndPayload(Message.java:599)
    at com.gemstone.gemfire.internal.cache.tier.sockets.Message.read(Message.java:542)
    at com.gemstone.gemfire.internal.cache.tier.sockets.Message.recv(Message.java:1029)
    at com.gemstone.gemfire.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:158)
    at com.gemstone.gemfire.cache.client.internal.AbstractOp.attempt(AbstractOp.java:363)
    at com.gemstone.gemfire.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:229)
    at com.gemstone.gemfire.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:321)
    at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:646)
    at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:108)
    ... 11 more
Run Code Online (Sandbox Code Playgroud)

如何获得整个堆栈而不是... 11 more

Ed *_*aub 29

整个堆栈.

这只是堆栈跟踪的一部分.直到此之前是另一件作品.看看这一行的底线和前一行的顶行.你会看到他们匹配.堆栈跟踪以一个不以"由...引起"的部分开始.

"由...引起"异常隐藏了堆栈跟踪的部分,这些部分是其父级中的堆栈跟踪条目的逐字副本.换句话说,Java不会为每个原因显示整个堆栈的main() - 它只显示您尚未看到的内容.请参阅Throwable.printStackTrace()文档.

创建Throwable时提供原因时会填充"由...引起".看看它的构造函数.当一段代码捕获一个低级异常,然后想要将它重新抛出为另一个异常类时,就可以完成此操作.

  • @LuchianGrigore - 您可以为特定异常而不是代码行设置断点.在调试透视图,Breakpoint选项卡中,有一个带有'J!'的按钮.在上面.按下! (11认同)
  • @Luchian - 这只是堆栈跟踪的_part_.直到此之前是另一件作品.看看这一行的底线和前一行的顶行.你会看到他们匹配.堆栈跟踪_began_的部分不以"由...引起"开头. (3认同)

小智 9

上面的答案是不准确的,每次堆栈显示"由...引起"这意味着异常经过一个或多个方法,直到它被捕获,然后再次抛出.这可能会发生很多次,堆栈跟踪不是循环,它是单个方向,所以不,顶部的东西与底部的东西无关,最重要的部分是底部的那个,是异常的根,所以如果你有:

类main中的异常:blah blah blah ...代码行...由FileNotFoundException引起...代码行...由:MalformedURLException ...代码行...引起:NullPointerException

那么你不希望如此关注FileNotFoundException,但是你想要更多地关注NullPointerException.比如说你有一个带有文件名的属性文件.如果意外地使用mykey,找到属性"myKey",那么propertiesResource将返回一个null,然后将所有代码行(希望)一直抛到最后一个catch块所在的应用程序...在这个piont中,它将被"包装"而不是作为nullException,而是作为FileNotFoundException...


sha*_*ing 5

在此输入图像描述

我们可能会偏离他所面临的实际问题.我有类似的问题,事实证明我有我的限制控制台输出框检查标记.删除它后,我能够看到完整的堆栈跟踪.步骤:右键单击控制台|| ctrl + click如果mac转到首选项并按照上述说明操作