2008-12-05 11 views
6

एक्लिप्स और मेरे एप्लिकेशन सर्वर (जेबॉस) के बीच क्या संचार चल रहा है जब मैं सर्वर को डीबगिंग मोड में ग्रहण के भीतर से चलाता हूं? यह कैसे काम करता है?किसी एप्लिकेशन सर्वर में ग्रहण डीबग कोड कैसे करता है?

उत्तर

12

जब आप डिबग मोड में सर्वर प्रारंभ, यह एक निर्दिष्ट TCP पोर्ट पर सुनता है। ग्रहण उस बंदरगाह से जुड़ता है, और वे जावा डीबग वायर प्रोटोकॉल (जेडीडब्ल्यूपी) का उपयोग करके बात करते हैं। यहां विवरण पढ़ें: http://java.sun.com/j2se/1.5.0/docs/guide/jpda/

5

मुझे लगता है कि यह JDWP (जावा डिबगिंग वायर प्रोटोकॉल) कहा जाता है - अधिक पढ़ें here

0

ग्रहण डीबगिंग एजेंटों के रूप में संदर्भित होता है।

जेवीएम, जो अनुपालन करता है। क्लास स्रोतों में एक सुविधा है जो बाहरी पुस्तकालयों (जावा या सी ++ में लिखी गई) को जेवीएम में इंजेक्शन देने की अनुमति देता है, बस रनटाइम के बारे में। इन बाहरी पुस्तकालयों को एजेंटों के रूप में जाना जाता है और उनके पास .class फ़ाइलों की सामग्री को संशोधित करने की क्षमता है। इन एजेंटों के पास JVM की कार्यक्षमता तक पहुंच है जो JVM के अंदर चल रहे नियमित जावा कोड के भीतर से पहुंच योग्य नहीं है और इन्हें चलने वाले स्रोत कोड, प्रोफाइलिंग इत्यादि जैसे इंजेक्शन और संशोधित करने जैसी रोचक सामग्री करने के लिए उपयोग किया जा सकता है। जेआरबेल जैसे टूल का उपयोग करता है अपने जादू को प्राप्त करने के लिए कार्यक्षमता का यह टुकड़ा।

और एक JVM करने के लिए एक एजेंट लिब पारित करने के लिए, आप हम वास्तव में JVM चल बिलाव के लिए एक एजेंट लिब नामित jdwp गुजर रहे थे शुरू तर्क के माध्यम से ऐसा करते हैं,

agentlib:libname[=options] format. 

का उपयोग कर। जेडीडब्ल्यूपी जेडीडब्लूपी (जावा डीबग वायर प्रोटोकॉल) का एक जेवीएम विशिष्ट, वैकल्पिक कार्यान्वयन है जिसका प्रयोग डीबगर और चल रहे जेवीएम के बीच संचार को परिभाषित करने के लिए किया जाता है। यह कार्यान्वयन है, अगर वर्तमान में jVM की मूल लाइब्रेरी के रूप में आपूर्ति की जाती है या तो jdwp.so या jdwp.dll

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

इसी तरह ग्रहण डीबगर कम में काम करता है।

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