72

こんなものを手に入れた時

ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677):     at com.companyname.a.a.a(Unknown Source)

問題がどこにあるかを知り、この問題をデバッグするにはどうすればよいですか? ProGuard からのマッピング出力しか取得できず、行番号がわかりません。ありがとう。

4

5 に答える 5

115

次の行をproguard構成に追加します。

-renamesourcefileattribute SourceFile    
-keepattributes SourceFile,LineNumberTable

これで、スタックトレースに行番号が含まれ、proguardに付属のリトレースツール(Android SDKに含まれています)を使用して、通常のようにデバッグできます。

これらの2つの構成オプションを使用しなかった場合でも、完全に明確ではありませんが、マッピングファイルがあれば、retraceは有用な情報を出力できることに注意してください。

注:マッピングを含むファイルは、proguard構成オプションによって生成されます。

 -printmapping outputfile.txt

Android SDKに同梱されているantファイルでは、mapping.txtに設定されています。

幸運を。

于 2011-07-12T19:50:09.923 に答える
15

Android マーケット アカウントのスタック トレースを利用する-printmappingには、ProGuard 構成のオプションで生成されたマップ ファイルを ReTrace (ProGuard コンパニオン ツール) で使用して、スタック トレースをデコードします。マップ ファイルの内容を使用して手動でデコードすることもできますが、これは面倒です。

ProGuard マニュアルの例の下に、行番号を保持する方法など、有用な難読化されたスタック トレースの生成に関するセクションがあります。

残念ながら、行番号を保持するように ProGuard を設定しなかった場合は、例外をスローしたメソッドを特定することしかできません。

于 2010-10-13T09:03:35.673 に答える
4

スタック トレースを stack_trace.txt に貼り付けます

次のコマンドを実行します: java -jar retrace.jar classes-processed.map stack_trace.txt

retrace.jar は sdk\tools\proguard\lib\retrace.jar にあります classes-processed.map は難読化を行ったときに proguard によって生成された出力ファイルです

于 2015-08-05T18:56:50.970 に答える