रिमोट डिबगिंग टोमाकट एक्लिप्स के साथ


95

मैं ग्रहण के माध्यम से टॉमकैट एप्लिकेशन को डिबग नहीं कर सकता। मैंने सेट कर दिया है

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

और फिर मैं चलाता हूं bin/catalina.sh, जहां मैं आउटपुट को यह कहते हुए देखता हूं कि यह किसके लिए सुन रहा dt_socketहै port 8000। लेकिन जब भी मैं 8000एक्लिप्स में पोर्ट से कनेक्ट करने की कोशिश करता हूं (रिमोट जावा एप्लिकेशन मेनू में एक प्रविष्टि जोड़कर), यह एक मना किए गए कनेक्ट के बारे में शिकायत करता है। कोई विचार?


क्या आप ग्रहण में प्रयुक्त अपने दूरस्थ विन्यास को पोस्ट कर सकते हैं।
शॉन

जवाबों:


133

क्या आप जांच सकते हैं कि क्या यह काम करता है?

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

catalina.sh jpda start

4
वास्तव में, तुम्हारा यह तय किया था। ग्रहण वास्तव में कुछ भी नहीं कहता है जब यह सफलतापूर्वक जोड़ता है, और दूसरी बार फिर से कनेक्ट करना त्रुटि को मजबूर करता है। तो यह काम कर रहा था, लेकिन मैंने अभी ध्यान नहीं दिया।
विजेता

18
यह विंडोज ओएस में उन लोगों के लिए है:set JPDA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n catalina.bat jpda start
ली ची Kiam

1
सस्पेंड = n विकल्प क्या करता है?
Trismegistos

2
@Trismegistos। suspendनिर्दिष्ट करता है कि jvm को डिबगर का इंतजार करना चाहिए या जारी रखना चाहिए। देखें इस डॉक
रघुराम

9
वास्तव में catalina.sh jpda startपर्याप्त होना चाहिए। Catalina.sh में कुछ JPDA_*पैरामीटर होते हैं जिनका उपयोग उदाहरण परिवर्तन पोर्ट के लिए किया जा सकता है, प्रलेखन के लिए फ़ाइल देखें।
8

53

सही जानकारी पाने के लिए मैंने इस पर कुछ समय बिताया।

तो यहाँ विस्तृत जानकारी चरण दर चरण है।

पर्यावरण: विंडोज 7

टॉमकैट संस्करण: 7.0

आईडीई: ग्रहण

टॉमकैट में दूरस्थ डिबगिंग को सक्षम करने के लिए जोड़े जाने वाले विन्यास है

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

मैं उपर्युक्त विन्यास फ्रॉ नॉन विंडोज़ वातावरण की सिफारिश नहीं करता। उपरोक्त कॉन्फ़िगरेशन को जोड़ने के लिए टॉमकैट सर्वर पर डबल क्लिक करें जो सर्वर दृश्य में उपलब्ध होगा। नीचे स्क्रीन शॉट खोजें। यहां छवि विवरण दर्ज करें

अब ऊपर रनटाइम पर्यावरण विन्यास को टोमैट में जोड़ें। इसके लिए स्क्रीनशॉट के नीचे देखें।

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

अब नीचे दिए गए स्क्रीन शॉट में शो के रूप में एडिट लॉन्च कॉन्फ़िगरेशन प्रॉपर्टीज़ में Arugments टैब मिला।

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

GoTo VM तर्क अनुभाग इन पंक्तियों को जोड़ते हैं।

-Xdebug

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

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

अब ग्रहण टूलबार पर डिबग बटन उपलब्ध है।

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

डीबग कॉन्फ़िगरेशन में "दूरस्थ जावा अनुप्रयोग" ढूंढें और उस पर डबल क्लिक करें।यहां छवि विवरण दर्ज करें

नाम फ़ील्ड में कोई भी नाम दर्ज करें जिसे आप पसंद करते हैं।

प्रोजेक्ट बटन से ब्राउज़ बटन का उपयोग करके उस परियोजना का चयन करें जिसे आप दूरस्थ डीबग करना चाहते हैं।

होस्टनाम और कुछ नहीं बल्कि होस्ट एड्रेस है। यहाँ मैं स्थानीय रूप से काम कर रहा हूँ इसलिए यह "लोकलहोस्ट" है।

अंतिम पोर्ट कॉलम का मान 8000 होना चाहिए। नाम और प्रोजेक्ट टेक्स्ट फ़ील्ड के अलावा अन्य दो कॉलम होस्ट और पोर्ट स्वयं द्वारा भरे जाएंगे यदि आपके पास उल्लेखित मान नहीं हैं। जानकारी के लिए स्क्रीन शॉट की जाँच करें।यहां छवि विवरण दर्ज करें

अब सर्वर कंसोल में TomcatServer पर राइट क्लिक करें संदर्भ मेनू से जोड़ें और निकालें चुनें। इस डायलॉग से आप प्रोजेक्ट को सर्वर से जोड़ सकते हैं।

अब टॉमकट को गंभीर रूप से चलाएं।

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

अब डीबग टूल से TomCatDebugConfiguration को चलाएं।

अंतिम खुले आंतरिक या बाहरी ब्राउज़र और अपना प्रोजेक्ट चलाएं। यदि निष्पादन नियंत्रण विराम बिंदुओं तक पहुंच गया, तो ग्रहण डिबग परिप्रेक्ष्य के लिए संकेत देगा।


47

टॉमकैट बिन निर्देशिका में जहां catalina.batया .sh(उर्फ {CATALINA_BASE} / बिन) पाया जाता है, संपादित करें (यदि वहां है तो बनाएं):

setenv.bat/.sh

निम्नलिखित पंक्ति जोड़ें:

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

आपको बस इतना करना है, आपको catalina.bat(या .sh) फ़ाइल को संपादित करने की आवश्यकता नहीं है ।

में टिप्पणियाँ देखें catalina.batया catalina.sh

आपको अपने विशेष वातावरण / स्थिति के लिए वाक्यविन्यास को समायोजित करना पड़ सकता है। उदाहरण के लिए, यदि आपके पास पहले से ही CATALINA_OPTS परिभाषित है, तो आप ऐसा कुछ कर सकते हैं (एक विंडोज़ वातावरण में):

set CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=n

ग्रहण से डिबग करने के लिए:

रन-> डिबग कॉन्फ़िगरेशन ...-> दूरस्थ जावा अनुप्रयोग-> नया

और एक नाम निर्दिष्ट करें, जिस प्रोजेक्ट पर आप डिबगिंग कर रहे हैं, और ऊपर निर्दिष्ट टॉमकट होस्ट और डीबग पोर्ट।


यह काम कर रहा है आपको इस CATALINA_OPTS को setenv.sh में सेट करना होगा जो कि tomcat / bin directory में है। धन्यवाद।
अमित कुमार

1
मेरे setenv.bat में यह JAVA_OPTS (tomcat 7) था
vikingsteve

हैलो फिलिप, कुछ नोट जोड़े जो मदद कर सकते हैं, यदि नहीं: जो ओएस, टॉमकैट और ग्रहण संस्करण आप उपयोग कर रहे हैं?
कर्ल

में setenv.bat में binनिर्देशिका एक लाइन की तरह डाल set JPDA_OPTS= -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n, उपयोग startup.batबिल्ला शुरू करने के लिए
परमवीर सिंह करवाल

33

में catalina.batफ़ाइल नीचे बदलें।

  • चरण 1: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

  • चरण 2: JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

  • चरण 3: नीचे की तरह कमांड प्रॉम्प्ट से टॉमकैट चलाएँ: catalina.sh jpda start

  • चरण 4: फिर ग्रहण में डिबग कॉन्फ़िगरेशन बनाएँ

    1. कॉन्फ़िगरेशन के लिए कोई भी नाम दें।
    2. दो project name
    3. कनेक्शन प्रकार दें Standard(Socket Attach)
    4. होस्ट के रूप में localhost
    5. पोर्ट के रूप में 8000(या किसी भी पोर्ट संख्या, लेकिन अन्य स्थानों में भी यही होना चाहिए)।

मैं कैटालिना_ओपीटीएस को कैटलिना.बीट में निम्नलिखित भागों में पाया है: doStop shift set ACTION = stop set CATALINA_OPTS = गोटो निष्पादन: doConfigTest शिफ्ट एक्टेशन / विन्यास सेट CATALINA_OPTS = गोटो निष्पादन इसे कहाँ संपादित करें? क्या आप केवल अपनी उत्प्रेरित सामग्री को अपलोड कर सकते हैं।
गोपकुमार एनजी

लगता है कि आप एक ही बात दो बार लिख रहे हैं। मैंने आपका चरण 1 छोड़ दिया - और यह काम करता है। क्या आप पुष्टि कर सकते हैं कि CATALINA_OPTS को बदलने की कोई आवश्यकता नहीं है?
हेनरी एलोनी

CATALINA_OPTS और JPDA_OPTS देखें के बीच के अंतर के लिए देखें: stackoverflow.com/questions/11222365/…
माइक आर

1
यह टॉमकैट 8 में काम नहीं करेगा। इसके लिए टॉमकैट 8 में काम करने के लिए, आपको चरण 1 छोड़ना होगा।
डेव

@RAJ। यह पूरी तरह से Tomcat 6 में काम करता है। बहुत बहुत धन्यवाद।
T8Z

7

उपरोक्त कई उत्तर सही हैं, लेकिन याद रखें कि डिफ़ॉल्ट रूप से डिबगर स्थानीयहोस्ट पर ही सुनेगा। यदि आप एक दूरस्थ सर्वर डिबगिंग कर रहे हैं, तो आपको उदाहरण के लिए, सुनने के लिए आईपी पता निर्दिष्ट करना होगा

JPDA_OPTS = "- Agentlib: jdwp = transport = dt_socket, पता = 10.1.1.33 : 8000, सर्वर = y, सस्पेंड = n"

catalina.sh जेपीडा प्रारंभ

ध्यान दें कि पता अब 10.1.1.33 है : 8000 है

बेशक, आप यह भी जांच सकते हैं कि कौन सा आईपी वास्तव में उपयोग किया जा रहा है, चलाकर

netstat -an

दोनों विंडोज़ और लिनक्स पर और find(विंडोज़) या grep(लिनक्स) के साथ पोर्ट को फ़िल्टर करें ।


मुझे लगता है कि आपका मतलब है कि कौन सा पोर्ट वास्तव में इस्तेमाल किया जा रहा है जो आईपी नहीं है ।
अब्दुल्ला

1
नहीं, मेरा मतलब है "आईपी एड्रेस"। यदि आप दूरस्थ डिबगिंग (किसी अन्य मशीन से) करते हैं, तो आपको एक आईपी पता निर्दिष्ट करने में सक्षम होना चाहिए जो स्थानीयहोस्ट या 127.0.0.1 से अलग हो। बेशक आपको हमेशा पोर्ट नंबर की आवश्यकता होगी।
DAB

5

बस चलाते हैं ./catalina.sh jpda start(कांटे) या ./catalina.sh jpda run(कांटा नहीं, मदद में उल्लेख नहीं किया गया है)। यहां बताए गए सभी विकल्प डिफ़ॉल्ट मानों के लिए हैं।


5

मुझे टॉमकैट 7 में रिमोट डिबगिंग मोड को सक्षम करने के सरल तरीके को ग्रहण (विंडोज) के साथ साझा करने दें।

चरण 1: खुला बिन / स्टार्टअप.बीएटी फ़ाइल
चरण 2: JDPA विकल्प के साथ डिबगिंग के लिए नीचे की पंक्तियाँ जोड़ें (यह फ़ाइल की लाइन शुरू होनी चाहिए)

    set JPDA_ADDRESS=8000  
    set JPDA_TRANSPORT=dt_socket  

चरण 3: एक ही फ़ाइल में .. इस पंक्ति को संशोधित करने के लिए फ़ाइल के अंत में जाएं -

    call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%  
    instead of line  
    call "%EXECUTABLE%" start %CMD_LINE_ARGS%  

चरण 4: फिर बस बिन> स्टार्टअप चलाएं। (इसलिए अब आपका टॉमकैट सर्वर पोर्ट 8000 के साथ रिमोट मोड में चला गया है)।

चरण 5: उसके बाद अपने सोर्स प्रोजेक्ट को दूरस्थ क्लाइंट के साथ ग्रहण आईडीई से कनेक्ट करने देता है।

चरण 6: ग्रहण आईडीई में "डिबग कॉन्फ़िगरेशन" पर जाएं

चरण 7: "रिमोट जावा एप्लिकेशन" पर क्लिक करें और उस पर "नया" क्लिक करें

step8। "कनेक्ट" टैब में पैरामीटर मान सेट करें

   project= your source project  
   connection Type: standard (socket attached)   
   host: localhost  
   port:8000  

स्टेप 9: अप्लाई एंड डीबग पर क्लिक करें।

तो आखिरकार आपका एक्लिप्स रिमोट क्लाइंट रनिंग टॉमकैट सर्वर (डिबग मोड) से जुड़ा है।

आशा है कि यह दृष्टिकोण आपकी मदद कर सकता है।

सादर..


4

जोड़ने के लिए catalina.bat संशोधित करें

set JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n" 

तथा

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

वैकल्पिक: जब आप स्टार्टअप चलाते हैं तो डिबग मोड को चलाने के लिए नीचे की पंक्ति जोड़ें

call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

ग्रहण या एसटीएस डिबग कॉन्फ़िगरेशन का चयन करें राइट क्लिक करें -> नया

connection type -> Standard socket Attach
Port -> 8000 (as given in the CATALINA_OPTS)
Host -> localhost or IP address

यह जानकारी WINDOWS के लिए है, लेकिन मैं अभी-अभी विंडोज़ पर आया हूं और इसलिए इसने मेरी मदद की। धन्यवाद!
अंगूठी

2

यदि अभी भी उपरोक्त सभी काम नहीं करते हैं तो आप हमेशा स्क्रिप्ट में जोड़ सकते हैं

    set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

2

Tomcat 7 में, catalina.sh के पास यह कोड है:

if [ "$1" = "jpda" ] ; then
  if [ -z "$JPDA_TRANSPORT" ]; then
    JPDA_TRANSPORT="dt_socket"
  fi
  if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="8000"
  fi
  if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
  fi
  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
  fi
  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
  shift
fi

Ii का अर्थ है कि आप JPDA को इसके साथ सेटअप कर सकते हैं:

export JPDA_TRANSPORT=dt_socket
export JPDA_ADDRESS=8000
export JPDA_SUSPEND=n

या साथ:

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

और अंत में उपयोग करें:

catalina.sh jpda start

सादर


Tomcat 8: JPDA_ चर को setenv.sh में सेट किया जा सकता है और उन्हें 'निर्यात' करने की आवश्यकता के बिना। किसी भी स्थिति में स्टार्टअप कॉल का पहला पैराम par जेपीडीए ’होना चाहिए। यदि आप सेवा के रूप में टॉमकैट शुरू करते हैं, तो सबसे अच्छा है कि $ {CATALINA_HOME} /bin/startup.sh स्क्रिप्ट को संशोधित करें, 'start' से पहले अंतिम पंक्ति में 'jpda' परम जोड़ें: "$ PRGDIR" / "$ EXECUTABLE" "jpda start" $ @ ""।
हेरि

1

मैं एक डॉकर कंटेनर के अंदर टॉमकैट चलाते हुए इस मुद्दे को उठा रहा था। इसे ठीक करने के लिए सुनिश्चित करें कि आप अपने पोर्ट में अपने स्थानीय मशीन को बेनकाब करने के लिए अपने डॉक रन कमांड में '-p 8000: 8000' को जोड़ दें। आपको अपने $ {CATALINA_HOME} / bin / में अपने कंटेनर में भी setenv.sh फ़ाइल की आवश्यकता होगी।


0

CATALINA_OPTS और JPDA_OPTS के साथ स्टार्टअप.बीएटी को संशोधित करना मेरे लिए कारगर नहीं था, लेकिन उन्हें उत्प्रेरित करने के लिए जोड़ना।

  1. उत्प्रेरक को संशोधित करें

CATALINA_OPTS = "- Xdebug -Xrunjdwp: परिवहन = dt_socket, पता = 8000, सर्वर = y, सस्पेंड = n"

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

  1. Jpda को शामिल करने के लिए स्टार्टअप को संशोधित करें

परिवर्तन कॉल "% विशिष्ट%" शुरू% CMD_LINE_ARGS% करने के लिए

"% EXECUTABLE%" को कॉल करें jpda start% CMD_LINE_ARGS%

फिर ग्रहण में अपने डीबग कॉन्फ़िगरेशन में दूरस्थ जावा एप्लिकेशन को कॉन्फ़िगर करें।


0

सबसे पहले, यदि आप टेक्स्ट एडिटर के साथ catalina.bat खोलते हैं, तो आप देखते हैं कि: "इस स्क्रिप्ट में चर सेट न करें ....." इसलिए इसे उस स्क्रिप्ट में कभी न बदलें, इसके बजाय आप नीचे दिए गए चरणों को कर सकते हैं:

  1. यह आपको "setenv.bat" नाम से एक नई बैट फाइल बनाने की सलाह देता है।
  2. फिर उस बैट फ़ाइल में 2 चर सेट करें जैसे:

    सेट CATALINA_OPTS = "- Xdebug -Xrunjdwp: परिवहन = dt_socket, पता = 8000, सर्वर = y, सस्पेंड = n"

    सेट JPDA_OPTS = "- Agentlib: jdwp = transport = dt_socket, पता = 8000, सर्वर = y, सस्पेंड = n"

  3. अंत में cmd ​​पर चलाएं कि: "catalina.bat jpda start"

  4. IDE में, दूरस्थ डीबग कॉन्फ़िगरेशन बनाएं और संबंधित सर्वर आईपी और पोर्ट को 8000 पर होस्ट सेट करें।


0

Apache-tomcat-8.5.28 वर्जन के लिए बस यही करें,

catalina.bat jpda start

जैसा कि पहले ही डिफ़ॉल्ट सेटिंग्स उत्प्रेरित.बेट में हमारे लिए कॉन्फ़िगर किया गया है

यदि "% JPDA_OPTS%" == "" गोटो को नहीं मिला है तो JPJ_O को सेट करें JPDA_OPTS = -agentlib: jdwp = transport =% JPDA_TRANSPORT%, पता =% JPDA_ADDRESS%, सर्वर = y, सस्पेंड =% JPDA_SUSPEND%।

तो किसी भी अन्य विन्यास की जरूरत नहीं है। और जब आप कमांड catalina.bat jpda start को निष्पादित करते हैं, तो आप देख सकते हैं कि डिबग पोर्ट 8000 खोला गया है।


0

जावा 8 और टॉमकैट 9 के साथ मेरे पास मौजूद मुद्दों के लिए यह उत्तर देखें: मेरे लिए टॉमकैट 9 में जावा रिमोट डिबगिंग (जेपीडीए) काम नहीं कर रहा है

यह @ DAB की चेतावनी के समान है, और उसका समाधान संभवतः अधिक सुरक्षित है।


-2

अपाचे-टोमकाट-8.5.28 के लिए

JDPA_OPTSनीचे की तरह फिर संशोधित करेंcatalina.bat jpda start

JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=8000,server=y,suspend=$JPDA_SUSPEND"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.