2011-02-23 11 views
23

कृपया ध्यान दें, विषय शीर्षक वाले कई अन्य प्रश्नों के विपरीत "एप्लिकेशन अप्रत्याशित रूप से बंद हो गया है", मैं किसी विशेष समस्या का निवारण करने के लिए नहीं कह रहा हूं।एप्लिकेशन अप्रत्याशित रूप से बंद हो गया है: डीबग कैसे करें?

इसके बजाय, मैं एक एंड्रॉइड/एक्लिप्स/जावा रूकी के लिए एक सरल एंड्रॉइड एप्लिकेशन को विकसित करने (और डीबग!) विकसित करने के लिए बड़ी मात्रा में जानकारी पचाने के इस भयानक कार्य से निपटने के लिए सबसे अच्छी रणनीति की रूपरेखा मांग रहा हूं।

मेरे मामले में, मैंने एसडीके से नमूना कंकाल ऐप लिया, इसे थोड़ा संशोधित किया और मुझे इसे चलाने का प्रयास करने के पल को क्या मिला?

आवेदन (process.com.example.android.skeletonapp) अप्रत्याशित रूप से रुक गया है। कृपया फिर से प्रयास करें।

ठीक है, इसलिए मुझे पता है कि मुझे लॉगकैट देखना है। यह मेरे पास घूरने वाली टाइमस्टैम्प लाइनों से भरा है ... अब मैं क्या करूँ? मुझे देखने की क्या ज़रूरत है?

क्या ऐप क्रैश करने वाले बयान को खोजने के लिए प्रोग्राम को सिंगल-चरण करने का कोई तरीका है? (मैंने सोचा था कि जावा प्रोग्राम कभी दुर्घटनाग्रस्त नहीं होते हैं, लेकिन स्पष्ट रूप से मुझे गलत लगाया गया था)

मैं ब्रेकपॉइंट कैसे रखूं?

क्या आप this one के अलावा अन्य एंड्रॉइड डीबग ट्यूटोरियल ऑनलाइन सुझा सकते हैं?

+1

अपने लॉगक आउटपुट से लाइन पर कॉपी-एन-पेस्ट करें ताकि लोग आपको सही दिशा में इंगित करने में मदद कर सकें। आम तौर पर 'अपवाद' शब्द और कॉलस्टैक या आपके आवेदन के किसी भी संदर्भ के लिए देखो। –

+0

@ typo.pl धन्यवाद, मैं निश्चित रूप से ऐसा करूँगा जब मुझे पता चले कि मैं क्या कर रहा हूं। इस बिंदु पर, हालांकि, मुझे केवल पद्धति में दिलचस्पी है क्योंकि @HappyCodeMonkey और @jqpubliq ने सुझाव दिया है। –

+1

मैंने आपको पद्धति दी - "लॉगक आउटपुट - शब्द 'अपवाद' और कॉलस्टैक या आपके एप्लिकेशन के किसी भी संदर्भ के लिए देखें"। एंड्रॉइड ने पहले ही आपको बताया है कि डीबगर में ब्रेकपॉइंट्स को सक्षम/अक्षम करने में समय बर्बाद न करें जब आपके ऐप में बड़ी समस्या है - अपवाद और कॉलस्टैक धूम्रपान बंदूकें हैं। –

उत्तर

16

मैं एक ग्रहण/एंड्रॉयड शुरुआत के साथ ही हूँ, लेकिन उम्मीद है कि मेरी सरल डिबगिंग प्रक्रिया में मदद कर सकते हैं ...

आप ग्रहण में breakpoints सेट उस लाइन के बगल में राइट-क्लिक करके जिसे आप तोड़ना चाहते हैं और "टॉगल ब्रेकपॉइंट" चुनना चाहते हैं। वहां से आप मानक "रन" की बजाय "डीबग" चुनना चाहते हैं, जो आपको आगे बढ़ने की अनुमति देगा। LogCat द्वारा प्रदान किए गए फ़िल्टर का उपयोग करें (आपके ट्यूटोरियल में संदर्भित) ताकि आप सभी आउटपुट के माध्यम से wading के बजाय इच्छित संदेशों को लक्षित कर सकें। यह आपकी उम्मीदों को समझने में मदद करने में एक लंबा सफर तय करेगा।

अन्य अच्छे ट्यूटोरियल के लिए, मैं कुछ खुद के लिए खोज रहा था, लेकिन अभी तक किसी भी रत्न को खोजने में कामयाब नहीं रहा।

+0

यह एक अच्छा जवाब है। मैंने उस लाइन के बगल में राइट-क्लिक करने की कोशिश की जिसे मैं तोड़ना चाहता हूं और "टॉगल ब्रेकपॉइंट" का चयन करें लेकिन मुझे ऐसा कोई मेनू आइटम नहीं मिला। क्या आप वाकई विजुअल स्टूडियो के साथ ग्रहण भ्रमित नहीं कर रहे हैं? :) –

+1

एक विधि के अंदर क्लिक करें। बाईं ओर उस विधि के दायरे के लिए नीली हाइलाइट होना चाहिए। यही वह जगह है जहां आप क्लिक करते हैं। एक डबल क्लिक बराबर – jqpubliq

+1

नहीं है, निश्चित रूप से ग्रहण ... हालांकि, इसे फिर से देखकर, क्या यह संभव है कि आप फाइल संपादक के बाईं ओर बेज रंग के रंग के बजाय फ़ाइल संपादक पर क्लिक कर रहे हों? (उदाहरण के लिए, यह वह क्षेत्र है जहां छोटी चेतावनियां आपको बताती हैं कि आपको एक पैकेज या जो कुछ भी आयात करने की आवश्यकता है)। अगर यह समझ में नहीं आता है तो मुझे स्क्रीनशॉट बनाने में खुशी होगी। – HappyCodeMonkey

9

अपनी लॉग फ़िल्टर बस में त्रुटि और गंभीर अपवाद देखने के लिए

+0

यह एक महान टिप है। धन्यवाद! (और +1 :) –

4

यदि आप एक्लिप्स में 'डीबग' परिप्रेक्ष्य के अंदर लॉगकैट डिस्प्ले का उपयोग करते हैं तो रेखाएं रंग-कोडित होती हैं। यह पता लगाना बहुत आसान है कि आपका ऐप क्रैश क्यों हुआ क्योंकि यह आमतौर पर लाल रंग में होता है।

जावा (या दलविक) वर्चुअल मशीन कभी क्रैश नहीं होनी चाहिए, लेकिन यदि आपका प्रोग्राम अपवाद फेंकता है और उसे पकड़ नहीं लेता है तो वीएम आपके प्रोग्राम को समाप्त कर देगा, जो आप देख रहे हैं 'क्रैश' है।

+0

+1। हर टिप गिना जाता है। :) –

0

चेक करें कि क्या आपके एप्लिकेशन की जरूरत permissions.I भी एक ही त्रुटि हो रही थी और मैं logcat डीबग लॉग जो पता चला है इस जाँच की है:

04-15 13:38:25.387: E/AndroidRuntime(694): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:555-555-5555 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44068640 694:rahulserver.test/10055} (pid=694, uid=10055) requires android.permission.CALL_PHONE 

मैं तो मेरे android-प्रकट की जरूरत की अनुमति दे दी है, जिसमें मेरे लिए काम किया

-2
  1. होम स्क्रीन से, मेनू कुंजी दबाएं।
  2. सूची आइटम
  3. स्पर्श सेटिंग्स।
  4. टच अनुप्रयोग।
  5. एप्लिकेशन प्रबंधित करें स्पर्श करें।
  6. सभी को स्पर्श करें।
  7. समस्या वाले एप्लिकेशन का चयन करें।
  8. डेटा साफ़ करें और उपलब्ध होने पर कैश साफ़ करें स्पर्श करें। यह ऐप को रीसेट करता है जैसे कि यह नया था, और ऐप में संग्रहीत व्यक्तिगत डेटा हटा सकता है।
+0

यह ऐप के साथ किसी समस्या को डीबग करने में मदद नहीं करेगा। यह किसी समस्या के लिए एक काम हो सकता है, लेकिन यह तय करने में मदद नहीं करता कि क्या गलत हो रहा था। – qqx

+0

प्रश्न डिबगिंग के लिए एक रणनीति के लिए पूछता है, जरूरी नहीं कि त्रुटि से छुटकारा पड़े –

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

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