Java 在Android中捕获printStackTrace()输出

Java 在Android中捕获printStackTrace()输出,java,android,Java,Android,我正在调试一个没有为Android显式编码的现有库。 它可以工作,但包含许多调用,例如printStackTrace()调用。 在安卓系统中,默认情况下这些不会写入logcat 我的问题是:如果不可能修改代码,是否可能以某种方式看到printStackTrace()调用生成的堆栈跟踪 在安卓系统中,默认情况下这些不会写入logcat 当然有。它们是在日志级别WARN写入的,标记通常是System.err如果您在Eclipse中工作,请打印堆栈跟踪并在Logcat(使用DDMS)工具中检查消息 如

我正在调试一个没有为Android显式编码的现有库。 它可以工作,但包含许多
调用,例如printStackTrace()
调用。 在安卓系统中,默认情况下这些不会写入logcat

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

在安卓系统中,默认情况下这些不会写入logcat


当然有。它们是在日志级别WARN写入的,标记通常是
System.err

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

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


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

我认为您可以使用getStackTrace


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

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

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

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

嗨,我想你弄错了。例如,printStackTrace()显示在logcat中。正确选择设备以显示logcat…printStackTrace()将被记录到logcat。是否已打开设备上的调试?