1

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

4

1 回答 1

3

也许您正在寻找的方法可以在 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);

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

希望这可以帮助...

于 2013-07-16T20:42:17.353 回答