Eclipse Logcat窗口切断exception堆栈跟踪

Eclipse中的logcat窗口仅显示每个exception的StackTrace的前几行。 这意味着我经常看不到发生exception的地方。 有没有办法改变这个设置?

Solutions Collecting From Web of "Eclipse Logcat窗口切断exception堆栈跟踪"

如果您所指的是“…更多行……”部分,则只能看到导致另一个exception的exception。 如果堆栈跟踪的顶部与先前的跟踪相同,则仅显示最外面的exception帧的完整集合,其他跟踪将得到“…”处理。

换句话说,未显示的跟踪的块是在exception原因链中出现的跟踪的副本。 例如,假设我有main()方法调用one() ,这会调用two() ,依此类推。 four()抛出一个exception。 two()捕获它并重新抛出它。 例外情况如下所示:

 java.lang.RuntimeException: re-throw at Foo.two(Foo.java:14) at Foo.one(Foo.java:7) at Foo.main(Foo.java:3) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.RuntimeException: first at Foo.four(Foo.java:23) at Foo.three(Foo.java:19) at Foo.two(Foo.java:12) ... 3 more 

“由……引起”exception说“… 3多”,而不是明确列出one()main()dalvik.system.NativeStart.main 。 因此,要获得初始exception的完整跟踪,您需要先读取其跟踪,然后继续上面的跟踪。

注意没有重叠 – two()出现在两个,但在“第一”跟踪它是在three()的调用,并在“重新抛出”跟踪它的throw指令。

你可以用(String tag, String msg, Throwable tr)参数重载所有的日志方法(log.d,log.i,log.e等),其中第三个参数是exception。 这将在logcat中给你完整的堆栈跟踪

http://developer.android.com/reference/android/util/Log.html

如果你的代码调用了一个产生太高堆栈的方法,你可以(也应该)处理你的代码中的exception,并输出与日志相关的东西。

如果你没有任何exception处理,你甚至不知道你的代码在哪里,如果你把这样的处理程序,那么问题完全在别处 – 你应该处理exception好一点。