2012-01-15 11 views
6

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

मैं मूल रूप से एप्लिकेशन को संलग्न करने और रोकने का एक तरीका ढूंढ रहा हूं, फिर ब्रेकपॉइंट ईवेंट के लिए कॉलबैक प्राप्त करने के लिए JVMTI एजेंट का उपयोग आगे प्रसंस्करण करने के लिए करें। धन्यवाद

+0

आप जेवीएम या एप्लिकेशन को रोकना चाहते हैं? अगर मैं सही ढंग से समझता हूं, तो एक जेवीएम कई अनुप्रयोगों को होस्ट कर सकता है। यदि यह जेवीएम है, वर्चुअलमाचिन क्लास, प्रक्रिया विधि आपके रिक के लिए शोध करने के लायक हो सकती है। – kosa

उत्तर

3

ब्रेकप्वाइंट के बारे में URL की जांच करें एकमात्र स्रोत में एक स्थान के साथ कोई मतलब। मनमाने ढंग से आपके एप्लिकेशन को रोकना शायद जेवीएम में चल रहे सभी थ्रेड को निलंबित करके सबसे अच्छा किया जाता है। SuspendThreadList() या SuspendThread पर jvmti पर एक नज़र डालें। यह तंत्र 'विराम' होगा जिसे आप ढूंढ रहे हैं।

1

यदि आप मनमाने ढंग से जेडीआई के साथ चल रहे जेवीएम को रोकना चाहते हैं, तो आप जेडीआई वर्चुअलमैचिन इंटरफ़ेस की suspend विधि का उपयोग करेंगे।

हालांकि, यह वास्तव में आपको jvmti एजेंट से कनेक्ट करने में सक्षम होने के संदर्भ में बहुत कुछ नहीं देता है; जैसा कि अन्य उत्तर बताते हैं, jvmti के पास एक ही काम करने के लिए अपने तरीके हैं।

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

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