2011-06-07 60 views
6

我一直在使用proguard內置的eclipse工具obsucate代碼,它工作正常。但是,當我嘗試追溯混淆代碼的堆棧跟蹤時,回溯不會輸出未混淆的堆棧跟蹤。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 

回答

15

默認的ProGuard的回掃工具預計堆棧跟蹤被很好地格式化,他們在Java打印出來的方式。這意味着它期望在適當的地方換行並且沒有像「ERROR/AndroidRuntime(19398)」這樣的前綴。

或者,您可以修改ReTrace用於解析堆棧跟蹤的正則表達式。

+0

如何傳遞常規expr模式?有什麼選擇? – Gopinath 2012-07-08 11:24:45

+0

@Gopinath Cfr。手冊。 – 2012-07-14 20:35:16

1

使用traceview在使用ReTrace之前提取原始Java堆棧跟蹤。

+0

你究竟如何做到這一點? – 2012-12-10 15:36:20

+0

對不起,我現在無法工作。獨立的traceview現在已被棄用。 – 2012-12-11 06:35:44

+0

這裏有一個簡單的正則表達式:'。*(:\ u0020)' – 2012-12-11 06:43:39