我正在调试一个没有为 Android 明确编码的现有库。它可以工作,但包含很多ex.printStackTrace()
调用。在 Android 中,这些默认情况下不会写入 logcat。
我的问题是:如果无法修改代码,是否有可能以某种方式查看printStackTrace()
调用生成的堆栈跟踪?
在 Android 中,这些默认情况下不会写入 logcat。
他们当然会。它们以日志级别 WARN 写出,标签通常为System.err
如果您在 Eclipse 中工作,请打印您的堆栈跟踪并检查 Logcat(使用 DDMS)工具中的消息。
如果没有,请adb logcat
在命令行中使用。
无论哪种方式,结果都不会显示任何标签,因此您必须猜测它们来自哪个应用程序。如果您想知道哪个应用程序正在发送它们,您最好使用Log函数。
我认为您可以使用 getStackTrace 来完成。
无论如何,不要这样做,因为打印堆栈跟踪不会返回导致错误的应用程序。使用 java.util 中的 Log 类。
如果您无法修改代码,那么如果最初没有编码,您将无法获得未写入 Log 的任何内容。如果您没有看到 PrintStackTrace,请确保您的设备启用了“调试模式”。否则,不,不修改代码,你无能为力。
如果您可以修改代码,则可以将 PrintStackTrace 放入 Log 方法中:
Log.e(TAG, "custom message", ex);