2013-02-11 11 views
8

कई स्टैक ओवरफ्लो प्रश्नों पर टिप्पणियों ने इंगित किया है कि deadd00d का एक गलती पता एक जानबूझकर वीएम निरस्तक इंगित करता है।एंड्रॉइड जेएनआई: रूट-कारण deadd00d (dvmAbort)

I DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d 

और वास्तव में, जब NDK-ढेर के माध्यम से लॉग चल रहा है, मैं देख रहा हूँ स्टैक फ्रेम के शीर्ष डीकोड कि करने के लिए:

Stack frame #00 pc 00050b0e /system/lib/libdvm.so (dvmAbort) 

तो टिप्पणी के लिए अपने लॉग में पहले देखने के लिए कहते हैं मुसीबत। मैं वास्तव में क्या देख रहा हूं - क्या कोई विशेष टैग या स्ट्रिंग खोजने के लिए है? (dalvikvm शायद?) मैंने कुछ भी प्रासंगिक खोज किए बिना लॉग के कई पृष्ठों के माध्यम से स्क्रॉल किया है - क्या यह सामान्य है, या यह गलती से ठीक पहले होना चाहिए?

deadd00d अक्सर GetObjectClass() को किसी विशेष कॉल के अंदर होता है। मैंने env-> अपवाद को उस पंक्ति से ठीक पहले जांचने का प्रयास किया है, लेकिन यह किसी भी पूर्व त्रुटियों की रिपोर्ट नहीं करता है।

मैं भी

adb shell setprop debug.checkjni 1 
निर्देश here प्रति

और here, लेकिन जब मारे गए और फिर से शुरू अनुप्रयोग, मैं उम्मीद संदेश दिखाई नहीं देता साथ CheckJNI को चालू करने की कोशिश की है

D Late-enabling CheckJNI 

बल्कि

D AndroidRuntime: CheckJNI is OFF 

का उपयोग करनाइंगित करता है कि संपत्ति वास्तव में चालू है, इसलिए मुझे यकीन नहीं है कि वहां क्या हो रहा है।

उत्तर

0

अगर यह देशी दुर्घटना है, तो आप "पश्व-अनुरेखन" खोज सकते हैं यह इंगित करेगा जहां मूल कोड तरीकों दुर्घटना, की तुलना में आप, तरीकों का विश्लेषण करना चाहिए

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