在Android中捕获printStackTrace()输出

时间:2012-07-05 19:28:59

标签: java android

我正在调试一个未针对Android显式编码的现有库。 它有效,但包含许多ex.printStackTrace()个调用。 在Android中,默认情况下不会将这些内容写入logcat。

我的问题是:没有修改代码的可能性,是否有可能以某种方式看到printStackTrace()调用生成的堆栈跟踪?

4 个答案:

答案 0 :(得分:1)

  

在Android中,默认情况下不会将这些内容写入logcat。

当然可以。它们以日志级别WARN写出,标记通常为System.err

答案 1 :(得分:0)

如果您在Eclipse中工作,请打印堆栈跟踪并检查Logcat(使用DDMS)工具中的消息。

如果没有,请在命令行中使用adb logcat

无论哪种方式,结果都不会显示任何标签,因此您必须猜测它们来自哪个应用程序。如果您想知道发送它们的应用程序,最好使用Log函数。

答案 2 :(得分:0)

我认为你可以使用getStackTrace。

无论如何,不​​要这样做,因为打印堆栈跟踪不会返回哪个应用程序导致错误。使用java.util中的Log类。

答案 3 :(得分:0)

如果您无法修改代码,则如果最初未编码,则无法获取未写入日志的任何内容。如果您没有看到PrintStackTrace,请确保您的设备已启用“调试模式”。否则,不,如果不修改代码,你就无能为力了。

如果您可以修改代码,可以将PrintStackTrace放入Log方法:

Log.e(TAG, "custom message", ex);