एक चल रही जावा प्रक्रिया में IntelliJ IDEA डिबगर संलग्न करें


237

क्या IntelliJ IDEA डिबगर को एक चल रही जावा प्रक्रिया से जोड़ना संभव है? यदि हाँ, तो कैसे?


3
बेशक। आपको "रिमोट" रन / डीबग कॉन्फ़िगरेशन बनाने की आवश्यकता है। अधिक यहाँ
विक

2
उम, ये कमांड लाइन तर्क केवल 14.0.2 के अनुसार पढ़ें हैं। आप उनमें से केवल एक जोड़े को संपादित कर सकते हैं, जो इस प्रश्न में समस्या को हल करने में मदद नहीं करता है। इसे ठीक करने के लिए कोई भी विचार?
नाज़ोलिलो

उत्तर यहाँ है: stackoverflow.com/questions/51207430/…
RoutesMaps.com

जवाबों:


372

हाँ! यहां बताया गया है कि आपने इसे कैसे सेट किया है।

कॉन्फ़िगरेशन चलाएँ

दूरस्थ रन कॉन्फ़िगरेशन बनाएँ:

  1. रन -> कॉन्फ़िगरेशन संपादित करें ...
  2. ऊपरी बाएँ में "+" पर क्लिक करें
  3. बाएं-सबसे फलक में "रिमोट" विकल्प चुनें
  4. एक नाम चुनें (मैंने अपना नाम "रिमोट-डिबगिंग" रखा)
  5. बचाने के लिए "ओके" पर क्लिक करें:

यहां छवि विवरण दर्ज करें

जेवीएम विकल्प

ऊपर दिया गया कॉन्फ़िगरेशन तीन रीड-ओनली फ़ील्ड प्रदान करता है। ये विकल्प हैं जो JVM को आपके एप्लिकेशन को चलाते समय दूरस्थ डिबगिंग के लिए पोर्ट 5005 खोलने के लिए कहते हैं। आपके द्वारा डिबगिंग कर रहे एप्लिकेशन के JVM विकल्पों में उपयुक्त एक को जोड़ें। ऐसा करने का एक तरीका यह हो सकता है:

export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

लेकिन यह इस बात पर निर्भर करता है कि आपका आवेदन कैसे चलता है। यदि आप सुनिश्चित नहीं हैं कि आप में से कौन सा तीन पर लागू होता है, तो पहले से शुरू करें और सूची में नीचे जाएं जब तक कि आपको वह काम न मिल जाए।

आप अपने एप्लिकेशन को इंतेलीज से जुड़ने तक प्रतीक्षा suspend=nकरने के suspend=yलिए बदलने के लिए बदल सकते हैं । यह मददगार है अगर आप जिस ब्रेकपॉइंट को हिट करना चाहते हैं, वह एप्लिकेशन स्टार्टअप पर होता है।

डिबग

अपना आवेदन शुरू करें जैसा कि आप सामान्य रूप से करेंगे, फिर इंटेलीज में नए कॉन्फ़िगरेशन का चयन करें और 'डीबग' को हिट करें।

यहां छवि विवरण दर्ज करें

इंटेलीज जेवीएम से जुड़ेगा और रिमोट डिबगिंग शुरू करेगा।

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


2
मैक ओएस एल कैपिटान पर "रिमोट" विकल्प मेरी इंटेलीज आईडीईए 15.0.2 में अनुपस्थित है। मुझे वह विकल्प कैसे मिल सकता है?
user674669

@ user674669 मुझे यकीन नहीं है। शायद Remoteसामुदायिक संस्करण पर उपलब्ध नहीं है? मैं सशुल्क संस्करण का उपयोग कर रहा हूं। क्या समुदाय संस्करण वाला कोई भी पुष्टि कर सकता है?
कोरी क्लेन

@CoryKlein क्या आपको पता है कि System.out.printlnरिमोट डिबगिंग के समय इंटेलीज में आउटपुट कैसे पकड़ा जाता है ?
डॉन रम्मी

1
@DonRhummy यदि आप यह पता लगाते हैं कि मैं इस जानकारी को इस उत्तर के साथ जोड़कर खुश हूं, लेकिन AFAIK IntelliJ के पास वर्तमान में रिमोट एप्लिकेशन से IntelliJ के लिए stdout और stderr पाइपिंग के लिए समर्थन नहीं है।
कोरी क्लेन

यदि दूरस्थ सर्वर केवल ssh पर उपलब्ध है तो हम मुख्य फाइल को कैसे निर्दिष्ट करते हैं?
vach

44

यह संभव है, लेकिन आपको अपना आवेदन शुरू करते समय कुछ जेवीएम झंडे जोड़ने होंगे।

आपको दूरस्थ डीबग कॉन्फ़िगरेशन जोड़ना होगा: कॉन्फ़िगरेशन संपादित करें -> दूरस्थ।

तब आपको प्रदर्शित डायलॉग विंडो पैरामीटर्स में मिलेंगे जिन्हें आपको प्रोग्राम एक्जीक्यूशन में जोड़ना होगा, जैसे:

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

फिर जब आपका आवेदन लॉन्च किया जाता है तो आप अपने डिबगर को संलग्न कर सकते हैं। यदि आप चाहते हैं कि आपका एप्लिकेशन डिबगर से कनेक्ट होने तक प्रतीक्षा करें, तो बस ध्वज को y में बदल दें ( suspend=y)


इसने मुझे भ्रमित किया कि आप नीचे दिए गए इनपुट्स को संपादित करते हैं और फिर ऊपर दिए गए विकल्प तार को अपडेट करते हैं (13.1 CE में, कम से कम।)
कार्ल जी

7
उम, ये कमांड लाइन तर्क केवल 14.0.2 के अनुसार पढ़ें हैं। आप उनमें से कुछ को संपादित कर सकते हैं। इसे ठीक करने के लिए कोई भी विचार?
नाज़ोलिलो

1
इसके अलावा, उन विकल्पों को सेट करके आप किस प्रक्रिया से जुड़ रहे हैं?
नाज़ोलिलो

5
पहले मेरे लिए काम किया। दूसरों पर ध्यान दें - मुझे -जार ध्वज से पहले इसे निर्दिष्ट करने की आवश्यकता है।
jim

2
@ न्यूज़ोलिलो, विचार में प्रदर्शित कमांड लाइन तर्क केवल प्रदर्शन उद्देश्यों के लिए हैं और इसलिए वे केवल पढ़ने के लिए हैं। उन्हें विचार में नहीं जोड़ा जाना चाहिए लेकिन दूरस्थ जावा अनुप्रयोग जिसे आप डीबग करना चाहते हैं।
गणेश कृष्णन

6

AndroidStudio या विचार में

  1. कॉन्फ़िगर करें एप्लिकेशन डिबग हो जाएगा, संपादन कॉन्फ़िगरेशन खोलें

"VM विकल्प" कॉन्फ़िगर करें “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” "पता याद रखें" जोड़ें

यहां छवि विवरण दर्ज करें

  1. दूरस्थ डीबगर को कॉन्फ़िगर करें यदि बाहर नहीं निकलता है, तो जोड़ने के लिए + पर क्लिक करें

"पोर्ट" को चरण 1 "पते" के समान निर्दिष्ट करें यहां छवि विवरण दर्ज करें


6

यदि आप डिबग मोड में कनेक्ट करना चाहते हैं, तो भी, एप्लिकेशन JAVA_OPTS में "-Xdebug" ध्वज जोड़ने की आवश्यकता न भूलें।


0

इसके अलावा मैं Tomcat GUI ऐप (मेरे मामले में: C: \ tomcat \ bin \ Tomcat9w.bin) का उपयोग करता हूं।

  • जावा टैब पर जाएं :

    यहां छवि विवरण दर्ज करें

  • उदाहरण के लिए, अपने जावा गुण सेट करें:

    जावा वर्चुअल मशीन

    C: \ Program Files \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll

    जावा वर्चुअल मशीन

    C: \ बिल्ला \ बिन \ bootstrap.jar; C: \ बिल्ला \ बिन \ बिल्ला-juli.jar

    जावा विकल्प :

    -Dcatalina.home = C: \ बिल्ला

    -Dcatalina.base = C: \ बिल्ला

    -Djava.io.tmpdir = C: \ बिल्ला \ अस्थायी

    -Djava.util.logging.config.file = C: \ बिल्ला \ conf \ logging.properties

    -agentlib: jdwp = परिवहन = dt_socket, सर्वर = y, निलंबित = n, पता = *: 8000

    जावा 9 विकल्प :

    --add-खोलता = java.base / java.lang = सभी अनाम

    --add-खोलता = java.base / java.io = सभी अनाम

    --add-खोलता = java.rmi / sun.rmi.transport = सभी अनाम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.