Proguard Retrace不使用像E / AndroidRuntime(10237)这样的堆栈跟踪运行时信息:

我需要从我的proguard.trace文件中删除行,如E / AndroidRuntime(10237):以便回溯起作用。 基本上我正在查看日志文件,需要删除此行或回溯不起作用。 我错过了什么,或者我是否需要为每个堆栈跟踪执行此操作? 基本上它之前的信息出现在stacktrace行的开头就像

E/AndroidRuntime(10237): at com.test.abc(UnnownSource) :134 

这是整个堆栈跟踪:

 E/AndroidRuntime(10237): FATAL EXCEPTION: main E/AndroidRuntime(10237): java.lang.ArithmeticException: divide by zero E/AndroidRuntime(10237): at ub.a(SourceFile:180) E/AndroidRuntime(10237): at wp.getView(SourceFile:290) E/AndroidRuntime(10237): at android.app.ActivityThread.main(ActivityThread.java:4627) E/AndroidRuntime(10237): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(10237): at java.lang.reflect.Method.invoke(Method.java:521) E/AndroidRuntime(10237): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) E/AndroidRuntime(10237): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) E/AndroidRuntime(10237): at dalvik.system.NativeStart.main(Native Method) etc E/ ( 2623): Dumpstate > /data/log/dumpstate_app_error 

所以我正在运行./retrace.sh mapping.txt proguard.retrace其内容在上面。 除非我删除E / AndroidRuntime(10237)否则它不会回溯:我错过了一些回溯选项。 如何为此工作准备跟踪文件? 我不认为它是映射文件,因为它删除行的第一部分后它工作。

Proguard希望每个“at”在一条单独的行上,并且只有前面有空格。 如果它在at之前看到除了空格之外的任何东西,它就不会对它进行反混淆。

最新版本的ReTrace可以使用诸如“E / AndroidRuntime(10237):”之类的logcat前缀来解析堆栈跟踪,因此它应该不再是一个问题。

如果您具有ReTrace无法解析的堆栈跟踪格式,则始终可以使用选项-regex指定自己的正则expression式。

尝试重新计算 。 它是一个基于logcat-color的python脚本,完全针对这种情况,即时logcat反混淆(虽然在Windows上不起作用)。 主要思想是它分别对日志的每个部分(标签/消息)进行反混淆处理。