2013-07-25 4 views
5

मैंने अपने ऐप के Google Play व्यवस्थापक क्षेत्र से एक क्रैश रिपोर्ट डाउनलोड की, इसे retrace.sh के माध्यम से प्रोगार्ड मैपिंग को डीबफस्केट करने के लिए चलाया, और यह नीचे आउटपुट का उत्पादन किया।आप एक deobfuscated एंड्रॉइड क्रैश रिपोर्ट की व्याख्या कैसे करते हैं?

सवाल:

अज्ञात स्रोत क्या है?

showHeader, showPhoto, आदि वास्तव में मेरे SummaryFragment कक्षा में विधियां हैं, लेकिन वे दिखाए गए क्रम में क्यों सूचीबद्ध हैं? ये विधियां मेरे कोड में किसी भी प्रकार के तार्किक या निष्पादन आदेश का पालन नहीं करती हैं।

एनपीई वास्तव में किस विधि में फेंक दिया गया था?

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 

उत्तर

7

प्रोगार्ड ने ऑब्फ्यूस्केटेड एप्लिकेशन से वैकल्पिक विशेषताओं SourceFile और LineNumberTable को हटा दिया है। नतीजतन, स्टैक निशान में लाइन संख्या नहीं होती है, जिससे कुछ अस्पष्टता होती है। रीट्रेस स्टैक ट्रेस की प्रत्येक पंक्ति के लिए संभावित विकल्पों की एक सूची प्रिंट करता है।

आप स्टैक ट्रेस कि व्याख्या करने के लिए आसान अपने proguard-project.txt को निम्नलिखित लाइनों को जोड़कर हैं प्राप्त कर सकते हैं:

-renamesourcefileattribute MyApplication 
-keepattributes SourceFile,LineNumberTable 

देखें ProGuard मैनुअल> वापस>Usage

प्रोगार्ड मैनुअल देखें> उदाहरण>Producing useful stack traces

संबंधित मुद्दे