2012-03-27 17 views
7

मैं ब्लैकबेरी के लिए अपने जावा एप्लिकेशन को डीबग करने का सबसे तेज़, सबसे प्रभावी तरीका ढूंढ रहा हूं।ब्लैकबेरी डिवाइस पर डीबग करने का सबसे प्रभावी तरीका?

मैंने देखा कि यह मेरे मामले में टॉर्च 9800 का उपयोग करके डिवाइस पर डीबगर संलग्न करने के लिए हमेशा के लिए लेता है। क्या मुझे इसे हर बार संलग्न करना है जब मैं अपने कोड में बदलाव करता हूं, या क्या कोई बेहतर तरीका है?

मैं यह भी देखा कि कंसोल में, डिवाइस सामान मैं वास्तव में परवाह नहीं है की एक बहुत मुद्रण किया जा रहा है। यह सब के माध्यम से बहना वास्तव में एक दर्द हो सकता है। क्या कंसोल में मेरे आवेदन के लिए केवल सामान को देखने का कोई तरीका है, विशेष रूप से केवल चीजें जिन्हें मैं स्वयं प्रिंट करता हूं?

+2

खैर मैं 1 वर्ष के लिए बी बी एप्लिकेशन विकसित कर रहा हूँ, लेकिन मैं कुछ भी आसान डिबगिंग करता है कि नहीं मिली है। –

उत्तर

8
  1. ग्रहण डिबगर और प्रोफाइलर, ज्यादातर मामलों में - सबसे अच्छा समाधान है, लेकिन कुछ मामलों में यह पता लगाने के लिए समस्या स्रोत है क्या मदद नहीं करता है।

  2. EventLogger वर्ग के माध्यम से आंतरिक डिवाइस लॉग में लेखन। एक विकल्प के रूप में, यदि डेटा मीडिया कार्ड (आंतरिक डिवाइस फाइल सिस्टम नहीं) पर स्थित बड़ी टेक्स्ट फ़ाइल - बाहरी टेक्स्ट फ़ाइल है।

  3. सांत्वना उत्पादन खिड़की का उपयोग करना। दुर्भाग्य से कंसोल आउटपुट पर फ़िल्टर लागू करने का कोई तरीका नहीं है, लेकिन कंसोल के साथ काम करने का एक तरीका आसान है। सिस्टम डीबग प्रिंटआउट को सिस्टम से अलग करने के लिए डीबग संदेशों की शुरुआत में प्रतीकों का अनुक्रम जोड़ें। उदाहरण

    System.out.println के लिए ("!!!!!!!!!!!!!!!!!!!!!!! myVar मूल्य =" + myVar);

या उस तरह से:

System.out.println("#############################################"); 
System.out.println("############# object1: " + object1); 
System.out.println("############# object2: " + object2); 
System.out.println("############# object3: " + object3); 
System.out.println("#############################################"); 

वहाँ कंसोल में डीबग डेटा का एक बड़ा राशि सिर्फ Notepad++ की तरह एक पाठ संपादक, करने के लिए सभी सांत्वना पाठ की प्रतिलिपि और वहाँ इसके साथ काम है जब।

+1

धन्यवाद। मैंने अपने प्रिंटआउट के सामने प्रतीकों का एक गुच्छा लगाया है। यह निश्चित रूप से मदद करता है, लेकिन यह अभी भी भयानक है कि हम फ़िल्टर नहीं कर सकते हैं। मैं एक्लिप्स का उपयोग करके एंड्रॉइड विकास भी करता हूं लेकिन मेरे पास यह विकल्प बहुत उपयोगी है। – PaulG

+0

बिंदु # 3 के बारे में, मैं भी ऐसा करने के लिए उपयोग करता हूं।पूरे लॉग को grep करना और केवल अपना आउटपुट प्राप्त करना सुविधाजनक है (यदि आपके पास लिनक्स वीएम है)। दुर्भाग्यवश कभी-कभी सिस्टम संदेश आपकी खुद की आउटपुट लाइनों के साथ मिश्रित हो जाते हैं, अधिकतर जब ये लंबे होते हैं। –

5

हाँ, सबसे आधुनिक सिमुलेटर पर डिबगर संलग्न करने के लिए हमेशा के लिए ले जाता है। नया सिम्युलेटर, जितना अधिक समय लगता है। क्या मैं आमतौर पर करते हैं:

  • कोशिश पुराने संभव सिम्युलेटर (अक्सर 83xx) में भारी डिबगिंग करने के लिए।
  • यदि संभव नहीं है, तो सिम्युलेटर लॉन्च करें और इसे बंद न करें। यह hot swap कार्यक्षमता केवल ब्लैकबेरी प्लगइन ग्रहण में 5.0 के बाद उपलब्ध है।
  • धन्यवाद गर्म स्वैप करने के लिए आप (रन विन्यास के साथ) सिम्युलेटर शुरू कर सकते हैं और फिर डिबग बटन पुश। शुरुआत से डीबग लॉन्च करने से यह बहुत तेज़ है।
  • ग्रहण प्लगइन के पुराने संस्करणों के साथ काम करते समय गर्म स्वैप उपलब्ध नहीं है, या ओएस < 5.0 के लिए कोडिंग, ग्रहण से ग्रहण से सिम्युलेटर लॉन्च करें, फिर आरआईएम जेडीई (हाँ, वह पुरानी शैली वाली आरआईएम निर्मित जावा आईडीई) खोलें और वहां से डीबगर संलग्न करें (डीबग मेनू -> संलग्न करें -> सिम्युलेटर)। आप ब्रेकपॉइंट्स में नहीं रुक सकते हैं, लेकिन आप टेक्स्ट आउटपुट देख सकते हैं। जेडीई ग्रहण प्लगइन के साथ नहीं आता है, आपको download होना चाहिए और इसे स्वतंत्र रूप से इंस्टॉल करना चाहिए।
+1

उत्तर के लिए धन्यवाद, मैंने सिमुलेटर पर डिबगिंग छोड़ दी है और विशेष रूप से मेरे डिवाइस (टॉर्च 9800) पर डिबगिंग कर रहा हूं। मुझे लगता है कि सिमुलेटर वास्तव में "हमेशा" कार्य नहीं करते हैं। – PaulG

+0

तब मैं सुझाव देता हूं कि आप वास्तविक डिवाइस से संलग्न करने के लिए जेडीई का उपयोग करें और ईवेंट लॉग खोलने के बजाय वास्तविक समय में आउटपुट देखें। इसके अलावा आप 'System.out.println' देख सकते हैं और न केवल लॉग प्रविष्टियां देख सकते हैं। पुराने ग्रहण प्लगइन्स ने इसे डीबग को धक्का देने की अनुमति दी, लेकिन नए प्लगइन संस्करण हर बार एप्लिकेशन को पुनर्स्थापित करते हैं, इसलिए यह जेडीई का उपयोग करने से धीमा है। –

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