2012-11-10 12 views
11

यह एक्लिप्स प्लग-इन बनाने का मेरा पहला प्रयास है। मैंने एक फीचर और अपडेट साइट के साथ एक बनाया है। मैंने लक्ष्य प्लेटफ़ॉर्म को अपनी स्थानीय ग्रहण स्थापना के रूप में सेट किया है। जब मैं विकास वातावरण के भीतर से प्लगइन चलाता/डीबग करता हूं तो सब कुछ ठीक काम करता है।ग्रहण प्लग-इन डीबगिंग

अब, मेरे सहयोगी ने मैंने अपलोड की गई अद्यतन साइट से प्लग-इन इंस्टॉल किया था। जब वह मेरी प्लगइन से उजागर की गई किसी भी कार्यक्षमता का उपयोग करना शुरू करता है तो उसे रनटाइम अपवाद मिलते हैं।

  1. वह शून्य सूचक अपवाद देखता है जो तब नहीं हुआ जब मैंने अपने विकास वातावरण से अपनी प्लग-इन प्रोजेक्ट चलाया।
  2. मेरे पास एक विज़ार्ड है जो मेरे प्लग-इन का हिस्सा है। जब वह इसे बंद करता है तो उसे "अनचाहे ईवेंट लूप अपवाद" मिलता है, और विज़ार्ड बंद नहीं होता है। जब मैं अपने विकास पर्यावरण में अपनी प्लगइन चला रहा/डिबग कर रहा था तो मेरे पास यह समस्या नहीं थी।

अब मैं भ्रमित हूं कि क्यों एक ही प्लग-इन उत्पादन वातावरण में अलग-अलग व्यवहार कर रहा है, क्योंकि देव पर्यावरण के खिलाफ और जब मैं इसे अपने आईडीई से डिबग कर रहा था। दोनों मामलों में लक्ष्य मंच एक ही ग्रहण संस्करण है। कारण क्या हो सकता है?

और मैं उत्पादन वातावरण में प्लग-इन कैसे डिबग करूं? उत्पादन वातावरण पर प्लग-इन डीबग करने के लिए कोई रिमोट डीबगिंग क्षमता है? कोई सुझाव वास्तव में उपयोगी होगा!

उत्तर

17

दूरस्थ डिबग अपनी प्लग-इन के लिए, पहले डिबग तर्क अपने लक्ष्य को .ini फ़ाइल

-vmargs 
-Xdebug 
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 

ग्रहण यह शुरू करने से पहले जोड़ें।

फिर अपने प्लग-इन प्रोजेक्ट वाले वर्कस्पेस के साथ एक और ग्रहण उदाहरण खोलें। ओपन रन>डीबग कॉन्फ़िगरेशन ..., दूरस्थ जावा एप्लिकेशन का चयन करें और एक नई कॉन्फ़िगरेशन बनाएं।

परियोजना, ब्राउज़ करें और अपनी प्लग-इन परियोजना का चयन करें। लक्ष्य ग्रहण और पोर्ट 1044) के अपने कनेक्शन गुणों को भी भरें (होस्ट)।

नव निर्मित डीबग कॉन्फ़िगरेशन लॉन्च करने से आप स्थानीय रूप से डीबग करने के तरीके को अपने प्लग-इन को डीबग कर सकते हैं।

+0

धन्यवाद tkotisis। मैं आपकी मदद से रिमोट डीबग करने में सक्षम था, और पता चला कि समस्या फाइल के कारण थी क्योंकि हम प्लग-इन के भीतर से कर रहे थे। FileWriter ने उत्पादन वातावरण में एक त्रुटि से इनकार कर दिया, जो हमारे विकास प्रणालियों में नहीं हुआ था। मैं केवल रिमोट डीबगिंग द्वारा इसे समझने में सक्षम था। एक बार फिर धन्यवाद! – Anand

0

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

जब परीक्षण कार्यक्षेत्र में आपकी प्लगइन निष्पादन आपके ब्रेकपॉइंट्स में से एक हो जाता है, तो निष्पादन रोक देगा और आप चर को देखने के लिए अपने विकास कार्यक्षेत्र में डीबग व्यू का उपयोग कर सकते हैं, अधिक ब्रेकपॉइंट्स सेट कर सकते हैं या कुछ भी जो आप डिबफ करना चाहते हैं आपकी प्लगइन

+0

धन्यवाद क्रिस। मैं समझता हूं कि नियमित डीबगिंग कैसे काम करती है। और जब मैंने उपर्युक्त उल्लेख किया है, तो मेरे प्लग-इन की सभी कार्यक्षमताओं की अपेक्षा की जाती है। मैंने एक मेवेन/जेनकींस आधारित सीआई प्रणाली स्थापित की है, जो मेरे लिए एक अद्यतन साइट बनाता है। जब मेरा सहयोगी इस प्लग-इन को स्थापित करने के लिए इस अद्यतन साइट का उपयोग करता है, और प्लग-इन कार्यक्षमता का उपयोग करना शुरू करता है, तो मुझे बहुत सारे अपवाद दिखाई देते हैं (जिनके बारे में मैंने अपने मूल प्रश्न में उल्लेख किया है)। जब मैं इसे अपने विकास पर्यावरण में डीबग करता हूं तो मुझे इन मुद्दों का सामना नहीं करना पड़ा। मैं उत्पादन वातावरण में समस्या को कैसे समझूं? – Anand

+1

उन अपवादों के दो सबसे संभावित कारण हार्ड-कोड किए गए फ़ाइल पथ और संसाधन (उदा। कॉन्फ़िगरेशन फ़ाइलें और आइकन) हैं जो प्लगइन जार में नहीं बनाए गए थे। बाद के लिए, अपने plugin.xml संपादक पर बिल्ड टैब देखें और सुनिश्चित करें कि प्रत्येक आवश्यक फ़ाइल को शामिल करने के लिए चुना गया है। सामान्य रूप से अपवादों के लिए, आप कैसे जानते हैं कि आपको अपवाद मिल रहे हैं? क्या आप अपने प्लगइन के एक्टिवेटर क्लास में लॉगिंग समर्थन का उपयोग कर रहे हैं जो त्रुटि लॉग दृश्य में संदेश लिख सकता है? क्रिसमस के विवरण के लिए –

+0

धन्यवाद। यह कोड में एक मुद्दा था, जिसे मैंने रिमोट डीबगिंग के बाद लगाया था। – Anand

2

अब मैं क्यों एक ही प्लग में देव वातावरण की तुलना में उत्पादन वातावरण में अलग तरह से बर्ताव कर रही है, और जब मैं मेरी आईडीई से यह डिबगिंग गया था के रूप में उलझन में हूँ। दोनों मामलों में लक्षित प्लेटफॉर्म समान ग्रहण संस्करण है। कारण क्या हो सकता है?

यह एक क्लासिक है: ग्रहण प्लगइन्स और आरसीपी अनुप्रयोग वास्तव में पीडीटी (ग्रहण आईडीई) और निर्यात किए गए उत्पाद के बीच अलग-अलग व्यवहार करते हैं।

आपके मामले में, निर्यात किए गए संस्करण से एक NullPointerException फेंक दिया गया है लेकिन ग्रहण से नहीं, 10 छवियों में से 9 गुना एक छवि या अन्य संसाधन फ़ाइलों (गुण, आदि) है जो आपके कोड द्वारा लोड किया गया है लेकिन निर्माण में सूचीबद्ध नहीं है आपकी प्लगइन की प्रॉपर्टीज।

वैसे भी, आपको स्टैकट्रैक पुनर्प्राप्त करने और इसके कारण का शिकार करने के लिए लॉग की जांच करनी होगी। इस तरह के लॉग आपके मित्र के कार्यक्षेत्र में ले .metadata/.log फ़ाइल

+0

प्रतिक्रिया जवाहर के लिए धन्यवाद। इस मामले में मुद्दा कोड में था, जिसे मैंने रिमोट डीबगिंग के बाद लगाया था। – Anand

0

Apache Wiki for Developing with Eclipse देखें।

Windows 10 के तहत बिलाव एक खिड़कियों सेवा के रूप में चल रहा है के साथ मैंने शुरू किया:

tomcat8.5\bin\Tomcat8w.exe

& जावा विकल्प में पहले प्रविष्टि के रूप में जावा टैब में जोड़ा दूरस्थ डिबगिंग को सक्षम करने के लिए:

-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n

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