android - 将堆栈跟踪打印到 Logcat

标签 android stack-trace logcat

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

相关文章:

java - 登录网络应用程序

apache - Redis PhpRedis 堆栈跟踪

android - native Activity OpenCV4Android 不工作

android - 在 BuildConfig.DEBUG 时删除 ActionbarSherlock 日志

Android 问题 - 如何准备 100 张图像以通过 Fling/Swipe 显示?

unit-testing - 使用 Scala 从 SBT 获取堆栈跟踪

javascript - 地理定位 Phonegap Android 不工作

android-studio - 如何禁用 Android Logcat 弹出窗口?

android - 验证在 RxJava Subscriber 的 onNext 中调用了方法

android - 应用程序更新失败 - 证书不一致(..但不是真的)