将堆栈跟踪打印到Logcat

时间:2013-07-16 20:38:49

标签: android stack-trace logcat

如何将堆栈跟踪打印到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?

1 个答案:

答案 0 :(得分:2)

也许你正在寻找的方法来显示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);

这将告诉您堆栈末尾是否未处理异常...

希望这会有所帮助......