2013-07-25 5 views
5

Ich habe einen Absturzbericht aus dem Google Play-Admin-Bereich meiner App heruntergeladen, ihn durch retrace.sh geführt, um das Proguard-Mapping zu entschlüsseln, und die Ausgabe unten erzeugt.Wie interpretierst du einen entschleierten Android-Absturzbericht?

Fragen:

Was ist Unknown Source?

showHeader, showPhoto usw. sind in der Tat Methoden in meiner SummaryFragment Klasse, aber warum sind sie in der angegebenen Reihenfolge aufgeführt? Diese Methoden folgen in meinem Code keiner logischen Reihenfolge oder Ausführungsreihenfolge.

In welcher Methode wurde die NPE tatsächlich geworfen?

Caused by: java.lang.NullPointerException 
at com.myapp.SummaryFragment.selectMenuItemAuth(Unknown Source) 
              showHeader 
              photoButtonClicked 
              showPhoto 
              nameButtonClicked 
              deleteByID 
              access$0 
at com.myapp.SummaryFragment.onActivityCreated(Unknown Source) 
at android.support.v4.app.Fragment.performActivityCreated(Unknown Source) 
at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source) 
               moveToState 
               moveToState 
               moveToState 

Antwort

7

ProGuard hat die optionalen Attribute SourceFile und LineNumberTable aus der verschleierten Anwendung entfernt. Daher haben die Stack-Traces keine Zeilennummern, was zu Mehrdeutigkeiten führt. ReTrace gibt eine Liste mit möglichen Alternativen für jede Zeile des Stack-Trace aus.

können Sie Stack-Traces erhalten, indem Sie die folgenden Zeilen zu Ihrer proguard-project.txt leichter zu interpretieren sind:

-renamesourcefileattribute MyApplication 
-keepattributes SourceFile,LineNumberTable 

finden Sie im Handbuch ProGuard> reTrace>Usage.

Siehe ProGuard Handbuch> Beispiele>Producing useful stack traces