2

我正在调试一个没有为 Android 明确编码的现有库。它可以工作,但包含很多ex.printStackTrace()调用。在 Android 中,这些默认情况下不会写入 logcat。

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

4

4 回答 4

1

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

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

于 2012-07-05T19:34:00.087 回答
0

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

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

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

于 2012-07-05T19:34:38.850 回答
0

我认为您可以使用 getStackTrace 来完成。

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

于 2012-07-05T19:35:19.557 回答
0

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

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

Log.e(TAG, "custom message", ex);
于 2012-07-05T19:53:08.310 回答