15

我需要从我的 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),否则它不会回溯:我是否缺少一些回溯选项。需要如何准备跟踪文件才能使其正常工作?我不认为它是映射文件,因为它在我删除该行的第一部分后才起作用。

4

3 回答 3

39

Proguard 希望每个“at”在单独的行上,并且前面只有空格。如果它在 at 之前看到除空白之外的任何内容,则不会对其进行模糊处理。

于 2013-07-26T14:47:48.167 回答
2

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

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

于 2013-07-28T10:20:04.933 回答
1

尝试recat。它是一个基于 logcat-color 的 python 脚本,专门为这种场景制作,即时 logcat 去混淆(虽然在 Windows 上不起作用)。主要思想是它分别对日志的每个部分(标签/消息)进行去混淆处理。

于 2015-12-09T19:40:02.820 回答