2010-12-01 7 views
5

मैं एक आईडीई के रूप में ग्रहण (लिखने, डीबग) का उपयोग करता हूं। डीबग मोड में जब मैं कुछ परिवर्तन करता हूं, जैसे स्थानीय चर प्रारंभ करना, वे स्वचालित रूप से परिलक्षित होते हैं।डीबग मोड में ग्रहण में स्वचालित रूप से कौन से कोड परिवर्तन दिखाई देते हैं?

लेकिन अन्य परिवर्तन जैसे स्थिर चर के मूल्य को बदलना; कभी-कभी मुझे एक संदेश मिलता है कि मुझे वीएम को पुनरारंभ करने की आवश्यकता है और कभी-कभी मैं नहीं करता हूं।

अब प्रश्न यह है कि किस प्रकार के परिवर्तन स्वचालित रूप से परिलक्षित होते हैं और क्या नहीं।

मैं रिमोट डीबगिंग का उपयोग करता हूं, लेकिन ग्रहण से प्रोग्राम चलाते समय कोई अंतर होगा?

उत्तर

2

यह आईडीई सुविधा नहीं है, लेकिन दूरस्थ डीबगिंग की वीएम सुविधा है। वीएम अब परिवर्तनीय प्रारंभकर्ताओं के तरीकों के अंदर तर्क में सरल परिवर्तनों को संभाल सकता है, लेकिन परिवर्तित वर्ग संरचना के साथ इलाज नहीं कर सकता है।

रीलोडिंग सामान्य रूप से इलाज की जाती है, जब आपकी कक्षा संरचना नहीं बदली जाती है: आप सदस्य, विधियों या आंतरिक कक्षाओं को हटा या जोड़ते नहीं हैं, क्योंकि सदस्यों या आंतरिक कक्षाओं को कक्षा स्मृति के लिए आवंटित आकार को बदलते हैं। तरीके स्मृति आकार को नहीं बदलती हैं, लेकिन उनकी संरचना को बदलती हैं।

Here आप कुछ स्पष्टीकरण पा सकते हैं।

3

आप कार्रवाई में हॉटस्पेप देख रहे हैं। यह केवल बदलती विधि निकायों तक ही सीमित है। अधिक जानकारी here

0

रिमोट डीबगिंग में, गर्म कोड प्रतिस्थापन बिल्कुल संभव नहीं है क्योंकि ग्रहण कक्षा फ़ाइलों को एक अलग JVM के अंदर स्वैप नहीं कर सकता है।

रिमोट डीबगर एक अलग वर्चुअल मशीन से जुड़ता है और उस दूरस्थ मशीन के अंदर निष्पादित कोड पर नज़र रखता है। बस स्रोत फाइलें स्थानीय हैं।

+0

ठीक है! मैं क्या करता हूं मैं रिमोट मशीन पर अपनी क्लास फाइलों को संकलित करता हूं, जहां से JVM चल रहा है। और बस दूरस्थ रूप से डीबग करें। –

0

स्टेटिक वेरिएबल वेरिएबल वेरिएबल्स हैं जो क्लास के तुरंत बाद तत्काल होते हैं। वे कक्षा लोडिंग समय पर तत्काल हैं। इसलिए स्थैतिक चर बदलना VM को पुनः लोड करने और बदले गए स्थैतिक चर को तुरंत चालू करने की आवश्यकता होगी।

यह सब मैं आपके प्रश्न के लिए प्रदान कर सकता हूं।

0

हॉटस्पेप बहुत सीमित है, यह केवल सरल विधि शरीर परिवर्तनों को पुनः लोड कर सकता है।

JRebel पर एक नज़र डालें, यह अन्य कोड परिवर्तनों को भी पुनः लोड कर सकता है (जैसे फ़ील्ड/विधियों/एनोटेशन/एनम वैल्यू इत्यादि को जोड़ना/निकालना)। इसके विस्तृत feature list देखें।

(कृपया ध्यान दें कि JRebel एक वाणिज्यिक उत्पाद, नि: शुल्क ओएसएस और स्काला डेवलपर्स के लिए उपलब्ध लाइसेंस के साथ है।)

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