Proguard retrace не отображает трассировку стека на фактический источник - PullRequest
6 голосов
/ 07 июня 2011

Я использовал встроенный в Proguard инструмент eclipse, чтобы скрыть код, который отлично работает.Однако, когда я пытаюсь отследить трассировку стека обфусцированного кода, восстановление не выдает необфускацированную трассировку стека.

Я дважды проверил 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

Ответы [ 2 ]

15 голосов
/ 18 июля 2011

Инструмент ReTrace от ProGuard по умолчанию ожидает, что трассировки стека будут хорошо отформатированы так, как они распечатаны в Java. Это означает, что он ожидает разрывов строк в нужных местах и ​​без префиксов, таких как «ERROR / AndroidRuntime (19398)».

Кроме того, вы можете изменить регулярное выражение, которое ReTrace использует для анализа трассировок стека.

1 голос
/ 09 мая 2012

Используйте traceview для извлечения исходной трассировки стека Java перед использованием ReTrace.

...