Proguard retrace 没有将堆栈跟踪映射到实际源

发布于 2024-11-14 12:33:54 字数 962 浏览 4 评论 0原文

我一直在使用 eclipse 内置的 proguard 工具来混淆代码,效果很好。但是,当我尝试重新跟踪混淆代码的堆栈跟踪时,重新跟踪不会输出未混淆的堆栈跟踪。

我仔细检查了mapping.txt,以确保我使用的是正确的。

这是我的堆栈跟踪

ERROR/AndroidRuntime(19398): 
FATAL EXCEPTION: Thread-35
ERROR/AndroidRuntime(19398): java.lang.NullPointerException
ERROR/AndroidRuntime(19398):     at android.graphics.Canvas.throwIfRecycled(Canvas.java:954)
ERROR/AndroidRuntime(19398):     at android.graphics.Canvas.drawBitmap(Canvas.java:980)
ERROR/AndroidRuntime(19398):     at com.excelectronic.b.aa.a(ProGuard:535)
ERROR/AndroidRuntime(19398):     at com.excelectronic.g.f.a(ProGuard:220)
ERROR/AndroidRuntime(19398):     at com.excelectronic.game.GameView.a(ProGuard:198)
ERROR/AndroidRuntime(19398):     at com.excelectronic.game.GameView.onDraw(ProGuard:98)
ERROR/AndroidRuntime(19398):     at com.excelectronic.game.ac.run(ProGuard:121)

并使用命令

retrace.bat -verbose mapping.txt obfuscated_trace.txt

I have been using the eclipse built in proguard tool to obsucate the code, which Works fine. However when I try to retrace the stack trace of the obfuscated code, retrace doesn't output an un-obfuscated stacktrace.

I have double check the mapping.txt to sure that i am using the right one.

here is my stack trace

ERROR/AndroidRuntime(19398): 
FATAL EXCEPTION: Thread-35
ERROR/AndroidRuntime(19398): java.lang.NullPointerException
ERROR/AndroidRuntime(19398):     at android.graphics.Canvas.throwIfRecycled(Canvas.java:954)
ERROR/AndroidRuntime(19398):     at android.graphics.Canvas.drawBitmap(Canvas.java:980)
ERROR/AndroidRuntime(19398):     at com.excelectronic.b.aa.a(ProGuard:535)
ERROR/AndroidRuntime(19398):     at com.excelectronic.g.f.a(ProGuard:220)
ERROR/AndroidRuntime(19398):     at com.excelectronic.game.GameView.a(ProGuard:198)
ERROR/AndroidRuntime(19398):     at com.excelectronic.game.GameView.onDraw(ProGuard:98)
ERROR/AndroidRuntime(19398):     at com.excelectronic.game.ac.run(ProGuard:121)

and using the command

retrace.bat -verbose mapping.txt obfuscated_trace.txt

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

狠疯拽 2024-11-21 12:33:54

默认情况下,ProGuard 的 ReTrace 工具期望堆栈跟踪具有良好的格式,就像 java 打印出来的那样。这意味着它期望在适当的位置换行,并且没有像“ERROR/AndroidRuntime(19398)”这样的前缀。

或者,您可以修改 ReTrace 用于解析堆栈跟踪的正则表达式。

ProGuard's ReTrace tool by default expects the stack traces to be nicely formatted, the way they are printed out by java. This means that it expects line breaks in the proper places and no prefixes like "ERROR/AndroidRuntime(19398)".

Alternatively, you can modify the regular expression that ReTrace uses for parsing the stack traces.

云之铃。 2024-11-21 12:33:54

在使用 ReTrace 之前,使用 traceview 提取原始 Java 堆栈跟踪。

Use traceview to extract the original Java stack trace before using ReTrace.

夏末的微笑 2024-11-21 12:33:54

我推荐使用 Android Studio 市场上的 Proguard Retrace Unscrambler。 https://plugins.jetbrains.com/plugin/15267-proguard-retrace- unscrambler (您可以复制粘贴堆栈跟踪,而不是弄乱命令行和正则表达式/格式

) “标准化”选项应正确包装内容。

注意:“日志文件”应具有映射文件

在此处输入图像描述

I can recommend using Proguard Retrace Unscrambler from Android Studio market place. https://plugins.jetbrains.com/plugin/15267-proguard-retrace-unscrambler (you can just copy-paste stack traces instead messing in command line & regex/formatting)

There is the "Normalize" option in which should properly wrap the contents.

Note: "Log file" should have the mapping file

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文