如何将堆栈跟踪信息打印到logcat?

当应用程序通过Eclipse运行并且崩溃时,我在logcat窗口中收到一系列消息,例如“ FATAL EXCEPTION:main”,并打印了堆栈跟踪。但是,当我从命令行使用adb logcat命令时,没有看到这些消息吗?我只看到一条消息,说example.app已死。

如何使用adb logcat命令获得与在Eclipse logcat窗口中显示的堆栈跟踪相同的堆栈跟踪?

编辑以澄清:

当设备连接到计算机时重现崩溃时,堆栈跟踪记录被打印到日志中,但是当设备未连接到计算机时重现崩溃时,堆栈跟踪记录被打印到日志中。

在设备未连接到计算机的情况下重现崩溃之后,我插入了USB电缆并使用:'adb logcat -d',我看到的唯一与崩溃相关的信息是:

I/WindowManager(  656): WIN DEATH: Window{42aba898 XXXXXXXXXX.XXXXXXX.XXXXX.XXXXXX/XXXXXXXXXX.XXXXXXX.XXXXX.XXXXXX.XXXXXXXXXXXX paused=false}
I/ActivityManager(  656): Process example.app (pid 28681) has died.
I/WindowManager(  656): WIN DEATH: Window{42aa9548 XXXXXXXXXX.XXXXXXX.XXXXX.XXXXXX/XXXXXXXXXX.XXXXXXX.XXXXX.XXXXXX.XXXXXXXXXXXXXX paused=true}


当设备未连接到计算机时,是否有办法让它仍将堆栈跟踪信息打印到logcat?

最佳答案

也许您正在寻找的方法可以在Logcat中显示整个异常,并能够对其进行跟踪并标记为:

android.util.Log.e(“您的标签”,“您的消息”,exceptionReference);

如果您想知道任何未捕获的异常,而无论它是否发生在哪里,这就是在应用程序刚启动时必须要做的事情(Application Context类将是一个好地方……):

UncaughtExceptionHandler uncaughtExceptionHandler = new UncaughtExceptionHandler(){

                    @Override
                    public void uncaughtException(Thread thread,
                            Throwable ex) {
                        //Here print the log...
                    }

                };
                Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler);


这将让您知道堆栈末尾是否未处理异常...

希望这可以帮助...

07-24 09:46
查看更多