2009-10-13 14 views
11

के साथ-साथ मैं स्थापित करने के लिए एक बिलाव उदाहरण है कि दूर से चलाने की जानी चाहिए पर ग्रहण TPTP स्मृति रूपरेखा कोशिश कर पिछले 4 घंटे बिताए (अर्थात ग्रहण में नहीं)। यह टीपीटीपी और एजेंट नियंत्रक दस्तावेज़ों के अनुसार संभव होना चाहिए।जावा JVMTI काम नहीं करता है -Xdebug -Xrunjdwp

मैंने वेबसाइट पर निर्देशों के निर्देशों के अनुसार एजेंट नियंत्रक के साथ, मेरे ग्रहण (गैलीलियो) वर्कबेंच में टीपीटीपी घटक (4.6.0) स्थापित किया।

-agentlib:JPIBootLoader=JPIAgent:server=enabled;HeapProf:allocsites=true 

और पथ के सामने से निम्न निर्देशिकाओं कहा:: करने के लिए

D:\dev\tools\ac\plugins\org.eclipse.tptp.javaprofiler 
D:\dev\tools\ac\bin 

प्रयास कर जब एजेंट सक्षम करने के लिए, मैं कमांड लाइन है कि बिलाव उदाहरण शुरू होता है के लिए निम्नलिखित विकल्पों जोड़ा बिलाव शुरू मैं लगातार निम्न त्रुटि संदेश मिला:

ERROR: JDWP unable to get necessary JVMTI capabilities. ["debugInit.c",L279] 

मैं Googling के एक बहुत कुछ किया है, लेकिन कुछ भी नहीं पाया releva NT; मैंने टीपीटीपी और एजेंट नियंत्रक के विभिन्न संस्करणों को पुनर्स्थापित करने की कोशिश की।

अंत में समस्या निकला होना करने के लिए है कि मैं "jpda" विकल्प है, जो catalina.bat

-Xdebug -Xrunjdwp:transport=..... 

में तब्दील हो "jpda" निकाल रहा है साथ बिलाव शुरू हो गया था आदेश तर्क की वजह से JVMTI शुरू करने के लिए काम कर रहे।

SO, सवाल यह है: मुझे अपनी किसी भी खोज के दौरान पर कुछ भी नहीं मिला है इंगित करता है कि एक JVMTI एजेंट डिबगिंग के साथ असंगत है। कोई बता सकता है कि क्या हो रहा है और JVMTI + JDWP वैध सेटअप क्यों नहीं है?

उत्तर

20

अब तक कोई भी जवाब सही नहीं है और अगर आप त्रुटि का सवाल पूछते हैं तो Google पर यह पहली हिट है, इसलिए मुझे लगता है कि कुछ स्पष्टीकरण की आवश्यकता है।

JVMTI और JDWP एक साथ काम करते हैं, वास्तव में वे आम तौर पर एक साथ उपयोग किए जाने चाहिए। आपको ERROR: JDWP unable to get necessary JVMTI capabilities मिलेगा यदि -Xrunjdwp (और/या संभवतः -agentlib:jdwp) कमांड लाइन पर एक से अधिक बार निर्दिष्ट किया गया है। इसे ठीक करने के लिए, सुनिश्चित करें कि आपके पास केवल कमांड लाइन में -Xrunjdwp या -agentlib:jdwp है।

अधिक जानकारी के लिए पर पढ़ें ...

JVMTI (जावा वर्चुअल मशीन उपकरण इंटरफ़ेस) JVMDI के उत्तराधिकारी (जावा वर्चुअल मशीन डीबग इंटरफेस) और JVMPI (जावा वर्चुअल मशीन रूपरेखा इंटरफेस) है। इसमें जेवीएमडीआई और जेवीएमपीआई दोनों की कार्यक्षमता शामिल है, जिनमें से दोनों जावा 5 में बहिष्कृत किए गए थे और जावा 6 में हटा दिए गए थे। यह एपीआई है जो डीवीगिंग और प्रोफाइलिंग के प्रयोजनों के लिए जेवीएम के आंतरिक को उजागर करती है।

जेडीडब्ल्यूपी (जावा डीबग वायर प्रोटोकॉल) एक प्रोटोकॉल है जो कमांड और प्रतिक्रियाओं को प्रेषित करने के लिए एक सरल तंत्र का वर्णन करता है। जहां तक ​​मुझे पता है, यह JVM के बाहर संवाद करने और JVMTI के साथ इंटरफेस करने के लिए जेवीएम के बाहर बैठे डीबगर का एकमात्र तरीका है।

जेडीआई (जावा डीबगर इंटरफ़ेस) एक क्लाइंट-साइड (डीबगर-साइड) एपीआई है जो JDWP की कुछ विशेषताओं को जेडीडब्ल्यूपी का उपयोग करते समय अधिक या कम पारदर्शी रूप से उपयोग करता है।

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

अधिक यहाँ जानकारी: http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/rzaha/jpdebuga.htm

+0

तो, क्या एक साथ प्रोफाइलिंग के साथ रिमोट डीबगिंग का उपयोग करना संभव है? –

+1

@ माइकल मुझे विश्वास है, लेकिन जब तक कि आप मेमोरी लीक या विशाल सीपीयू स्पाइक को पुन: पेश करने के प्रयास में कुछ अजीब परिस्थितियों की नकल करने की कोशिश नहीं कर रहे हैं, तो खराब विचार की तरह ध्वनि को डीबग करने के दौरान प्रोफाइलिंग नहीं होती है? –

+0

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

3

मैं आपके जैसी ही समस्या में भाग गया, लेकिन मैं एक जेवीएम बग रिपोर्ट (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6354345) के साथ आया जिसने इस मुद्दे पर कुछ प्रकाश डाला। यह मूल रूप से जावा एजेंट लाइब्रेरी में आता है, जिसे कभी भी उसी वीएम में दो बार लोड करने का इरादा नहीं किया जाता है। बेकार है, लेकिन ऐसा लगता है कि यह एजेंट सिस्टम की मूल सीमा है कि आप एक ही समय में दोनों नहीं कर सकते हैं।

+0

जानकारी के लिए धन्यवाद। –

1

मेरे लिए यह कोड ब्लिंग पोस्ट के रूप में एक ही मुद्दा था, वे डुप्लिकेट -Xrunjdwp का एहसास नहीं था वहाँ एक दूसरे -Xrunjdwp के रूप में यह चर %JAVA_OPTIONS% में छिपा हुआ था, इसलिए आपकी आवेदन की जांच कर रहे थे सर्वर स्क्रिप्ट शुरू करें।

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