如何将堆栈跟踪打印到 logcat?
当应用程序通过 Eclipse 运行并且应用程序崩溃时,我在 logcat 窗口中收到一系列消息,如“致命异常:主”,并打印堆栈跟踪。但是,当我从命令行使用 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("你的TAG,", "你的信息", exceptionReference);
如果您想知道任何未捕获的异常,无论您是否知道它发生在哪里,这就是您在应用程序刚启动时的某个时刻必须做的事情(Application Context 类将是一个好地方......):
UncaughtExceptionHandler uncaughtExceptionHandler = new UncaughtExceptionHandler(){
@Override
public void uncaughtException(Thread thread,
Throwable ex) {
//Here print the log...
}
};
Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler);
这将让您知道是否在堆栈末尾未处理异常...
希望这有助于...
关于android - 将堆栈跟踪打印到 Logcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17686514/