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

时间:2012-05-10 22:02:30

标签: android proguard

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

 E/AndroidRuntime(10237):  at com.test.a.b.c(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),否则它不会回溯: 我错过了回溯的一些选项。如何为此工作准备跟踪文件?我不认为它是映射文件,因为它在我删除该行的第一部分后起作用。

3 个答案:

答案 0 :(得分:35)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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