Eclipse ile uzaktan hata ayıklama Tomcat


95

Eclipse aracılığıyla tomcat uygulamasında hata ayıklayamıyorum. Ben ayarladım

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

ve sonra ben çalıştırmak bin/catalina.shı için 's dinleme diyerek çıktı gördüğünüz, dt_socketüzerinde port 8000. Ancak ne zaman 8000Eclipse'de bağlantı noktasına bağlanmaya çalışsam (uzaktaki java uygulama menüsüne bir giriş ekleyerek), reddedilen bir bağlantıdan şikayet ediyor. Herhangi bir fikir?


tutulmada kullanılan uzak yapılandırmanızı gönderebilir misiniz lütfen?
Sean

Yanıtlar:


134

Bunun işe yarayıp yaramadığını kontrol edebilir misin?

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

catalina.sh jpda start

4
Aslında seninki düzeltti. Eclipse, başarılı bir şekilde bağlandığında aslında hiçbir şey söylemiyor ve ikinci kez yeniden bağlanmak hatayı zorluyor. Yani çalışıyordu, ama fark etmedim.
victor

18
Bu Windows işletim sistemindekiler için:set JPDA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n catalina.bat jpda start
Lee Chee Kiam

1
Suspend = n seçeneği ne yapar?
Trismegistos

2
@Trismegistos. suspendjvm'nin hata ayıklayıcıyı beklemesi mi yoksa devam etmesi mi gerektiğini belirtir. Bu belgeye bakın .
Raghuram

10
Aslında catalina.sh jpda startyeterli olmalı. Catalina.sh, JPDA_*örneğin bağlantı noktasını değiştirmek için kullanılabilen birkaç parametreye sahiptir, dokümantasyon için dosyaya bakın.
zpon

53

Doğru bilgiyi almak için buna biraz zaman harcadım.

İşte ayrıntılı bilgiler adım adım.

Ortam: Windows 7

TomCat sürümü: 7.0

IDE: Tutulma

Tomcat ile uzaktan hata ayıklamayı etkinleştirmek için eklenecek yapılandırmalar

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

Windows dışı ortamlar için yukarıdaki yapılandırmayı önermiyorum. Yukarıdaki yapılandırmayı eklemek için, sunucu görünümünde mevcut olacak tomcat sunucusuna çift tıklayın. Aşağıdaki ekran görüntüsünü bulun. görüntü açıklamasını buraya girin

Şimdi yukarıdaki çalışma zamanı ortamı yapılandırmasını tomcat'e ekleyin. Bu kontrol için aşağıdaki ekran görüntüsü.

görüntü açıklamasını buraya girin

Şimdi, aşağıdaki ekran resminde gösterildiği gibi Başlatma yapılandırmasını düzenle içindeki Arugments sekmesine geldik.

görüntü açıklamasını buraya girin

GoTo VM argümanları bölümü bu satırları ekler.

-Xdebug

-agentlib: jdwp = taşıma = dt_socket, adres = 8000, sunucu = y, askıya alma = n

görüntü açıklamasını buraya girin

Şimdi eclipse araç çubuğunda bulunan hata ayıklama düğmesi var.

görüntü açıklamasını buraya girin

Debug konfigürasyonlarında "Remote Java Application" bulun ve üzerine çift tıklayın.görüntü açıklamasını buraya girin

Ad alanına istediğiniz herhangi bir adı girin.

Gözat düğmesini kullanarak proje alanından uzaktan hata ayıklama yapmak istediğiniz projeyi seçin.

Ana bilgisayar adı, ana bilgisayar adresinden başka bir şey değildir. Burada yerel olarak çalışıyorum bu yüzden "localhost".

Son olarak Port sütununun değeri 8000 olmalıdır. Name ve Project metin alanlarının yanı sıra diğer iki sütun Host ve port, belirtilen değerlere sahip değilseniz tutulmanın kendisi tarafından doldurulur. Bilgi için Ekran görüntüsünü kontrol edin.görüntü açıklamasını buraya girin

Şimdi sunucu konsolunda TomcatServer'a sağ tıklayın bağlam menüsünden Ekle ve Kaldır'ı seçin. Bu iletişim kutusundan projeyi sunucuya ekleyebilirsiniz.

Şimdi Tomcat sunucusunu çalıştırın.

görüntü açıklamasını buraya girin

Şimdi TomCatDebugConfiguration'ı Debug Tool'dan çalıştırın.

Son olarak dahili veya harici tarayıcıyı açın ve projenizi çalıştırın. Yürütme kontrolü kırılma noktalarına ulaştıysa, tutulma hata ayıklama perspektifi isteyecektir.


47

catalina.batVeya bulunduğu tomcat bin dizininde .sh(aka {CATALINA_BASE} / bin), düzenleyin (orada değilse oluşturun):

setenv.bat/.sh

Aşağıdaki satırı ekleyin:

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

Tek yapmanız gereken bu, catalina.bat(veya .sh) dosyasını düzenlemenize gerek yok .

catalina.batVeya içindeki yorumları görün catalina.sh.

Kendi ortamınız / durumunuz için sözdizimini ayarlamanız gerekebilir. Örneğin, önceden CATALINA_OPTS tanımladıysanız, şöyle bir şey yapabilirsiniz (bir Windows ortamında):

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

Eclipse'den hata ayıklamak için:

çalıştır-> Yapılandırmalarda hata ayıkla ...-> Uzak Java Uygulaması-> Yeni

ve bir ad, hata ayıkladığınız proje ve yukarıda belirtilen tomcat ana bilgisayar ve hata ayıklama bağlantı noktasını belirtin.


Bu çalışıyor, bu CATALINA_OPTS'yi tomcat / bin dizinindeki setenv.sh içinde ayarlamanız gerekecek. Teşekkürler.
Amit Kumar

1
Benim setenv.bat'ımda JAVA_OPTS (tomcat 7) idi
vikingsteve

Merhaba Philip, yardımcı olamayacak bazı notlar ekledi: hangi os, tomcat ve eclipse sürümlerini kullanıyorsunuz?
karl

içinde setenv.bat de bindizine gibi bir satır koymak set JPDA_OPTS= -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=nkullanım, startup.baterkek kedi başlamak
Paramvir Singh Karwal

33

Gelen catalina.batdosyanın altına değiştirmek lütfen.

  • Aşama 1: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

  • Adım 2: JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

  • Adım 3: Tomcat'i aşağıdaki gibi komut isteminden çalıştırın: catalina.sh jpda start

  • Adım 4: Ardından tutulmada bir hata ayıklama yapılandırması oluşturun

    1. Yapılandırma için herhangi bir isim verin.
    2. Verin project name.
    3. Bağlantı türünü şu şekilde verin: Standard(Socket Attach)
    4. ev sahibi olarak localhost
    5. bağlantı noktası olarak 8000(veya herhangi bir bağlantı noktası numarası, ancak bu başka yerlerde de aynı olmalıdır).

Catalina.bat'da aşağıdaki bölümlerde CATALINA_OPTS buldum: doStop shift set ACTION = stop set CATALINA_OPTS = goto execCmd: doConfigTest shift set ACTION = configtest set CATALINA_OPTS = goto execCmd nerede düzenlenmeli? Sadece catalina.bat'ınızın içeriğini yükleyebilir misiniz?
Gopakumar NG

Aynı şeyi iki kez yazıyor gibisin. 1. adımınızı atladım - ve işe yarıyor. CATALINA_OPTS’ı değiştirmenize gerek olmadığını onaylayabilir misiniz?
Henry Aloni

CATALINA_OPTS ve JPDA_OPTS arasındaki fark için bakınız: stackoverflow.com/questions/11222365/…
Mike R

1
Tomcat 8'de bu işe yaramayacak. Tomcat 8'de çalışabilmesi için 1. adımı
Dave

@RAJ. Tomcat 6'da tamamen işe yaradı. Çok teşekkür ederim.
T8Z

7

Yukarıdaki cevapların çoğu doğrudur, ancak varsayılan olarak hata ayıklayıcının localhost'u dinleyeceğini unutmayın; bu , yalnızca hata ayıklama istemcisini (örneğin, IDE'yi) aynı makinede çalıştırıyorsanız hata ayıklayabileceğiniz anlamına gelir.

Uzak bir sunucuda hata ayıklıyorsanız , dinlemek için o sunucuda doğru IP adresini belirtmeniz gerekecektir, örneğin

JPDA_OPTS = "- agentlib: jdwp = taşıma = dt_socket, adres = 10.1.1.33 : 8000, sunucu = y, askıya alma = n"

catalina.sh jpda başlangıcı

Adresin artık 10.1.1.33 : 8000 olduğunu unutmayın.

Elbette, gerçekte hangi IP'nin kullanıldığını da kontrol edebilirsiniz.

netstat -an

Bu komut hem Windows hem de Linux için geçerlidir - sadece find(Windows) veya grep(Linux) ile bağlantı noktasını filtrelemeniz gerekir .


Sanırım hangi PORT'un hangi IP'nin kullanıldığı değil de kullanıldığını kastediyorsunuz .
Abdullah

2
Hayır, "IP adresi" demek istiyorum. Uzaktan hata ayıklama yaparsanız (başka bir makineden), localhost veya 127.0.0.1'den farklı bir IP adresi belirtebilmeniz gerekir. Elbette her zaman port numarasına da ihtiyacınız olacak.
DAB

5

Sadece çalıştırın ./catalina.sh jpda start(çatallar) veya ./catalina.sh jpda run(çatal yok, yardımda belirtilmemiş). Burada bahsedilen tüm seçenekler varsayılan değerlerdir.


5

Tomcat7'de eclipse (Windows) ile uzaktan hata ayıklama modunu etkinleştirmenin basit yolunu paylaşmama izin verin.

Adım 1: bin / startup.bat dosyasını açın
Adım 2: JDPA seçeneğiyle hata ayıklamak için aşağıdaki satırları ekleyin (dosyanın başlangıç ​​satırı olmalıdır)

    set JPDA_ADDRESS=8000  
    set JPDA_TRANSPORT=dt_socket  

3. Adım: aynı dosyada .. dosyanın sonuna gidin bu satırı değiştirin -

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

4. adım: sonra bin> startup.bat komutunu çalıştırın (yani artık tomcat sunucunuz 8000 bağlantı noktasıyla uzak modda çalışıyor).

Adım 5: Bundan sonra kaynak projenizi IDE'yi uzak istemciye tutarak bağlamanızı sağlar.

step6: Eclipse IDE'de "hata ayıklama Yapılandırması" na gidin

step7: "uzak java uygulaması" na ve ardından "Yeni" ye tıklayın

adım8. "bağlan" sekmesinde parametre değerini ayarlayın

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

step9: uygula ve hata ayıklama'yı tıklayın.

son olarak eclipse uzak istemciniz çalışan tomcat sunucusuna bağlanır (hata ayıklama modu).

Umarım bu yaklaşım size yardımcı olabilir.

Saygılarımızla..


4

Eklemek için catalina.bat dosyasını değiştirin

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

ve

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

İsteğe bağlı: startup.bat'ı çalıştırdığınızda varsayılan olarak hata ayıklama modunu çalıştırmak için aşağıdaki satırı ekleyin

call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

Eclipse veya STS hata ayıklama yapılandırmasını seçin sağ tıklama -> yeni

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

Bu bilgi WINDOWS içindir, ama ben sadece pencerelerde bulundum ve bu yüzden bana yardımcı oldu. Teşekkürler!
yüzük

2

Hala yukarıdakilerin tümü işe yaramazsa, her zaman betiğe ekleyebilirsiniz.

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

2

Tomcat 7'de, catalina.sh şu koda sahiptir:

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'yı aşağıdakilerle kurabileceğinizi ima eder:

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

Veya şununla:

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

Ve son olarak şunu kullanın:

catalina.sh jpda start

Saygılarımızla


Tomcat 8: JPDA_ değişkenleri setenv.sh içinde onları 'dışa aktarmaya' gerek kalmadan ayarlanabilir. Her durumda, başlangıç ​​çağrısının ilk parametresi 'jpda' olmalıdır. Tomcat'i hizmet olarak başlatırsanız, en iyisi $ {CATALINA_HOME} /bin/startup.sh komut dosyasını değiştirmek, "jpda" parametresini "start" dan önceki son satıra eklemektir: ´´exec "$ PRGDIR" / "$ EXECUTABLE "jpda başlangıcı" $ @ "´´.
Heri

1

Bir Docker konteynerinin içinde Tomcat'i çalıştırırken bu sorunu çözüyordum. Bunu düzeltmek için docker run komutuna '-p 8000: 8000' argümanını ekleyerek bu bağlantı noktasını yerel makinenize gösterdiğinizden emin olun. Elbette $ {CATALINA_HOME} / bin / içinde setenv.sh dosyasına da konteynırınızda ihtiyacınız olacak.


0

Startup.bat dosyasını CATALINA_OPTS VE JPDA_OPTS ile değiştirmek benim için işe yaramadı, ancak katalina.bat'a eklemek işe yaradı

  1. Catalina.bat dosyasını değiştirin

CATALINA_OPTS = "- Xdebug -Xrunjdwp: taşıma = dt_socket, adres = 8000, sunucu = y, askıya alma = n"

JPDA_OPTS = "- agentlib: jdwp = taşıma = dt_socket, adres = 8000, sunucu = y, askıya alma = n"

  1. Startup.bat dosyasını jpda'yı içerecek şekilde değiştirin

"% EXECUTABLE%" çağrısını değiştir, başlangıç% CMD_LINE_ARGS%

"% EXECUTABLE%" jpda başlangıcı% CMD_LINE_ARGS%

Ardından Eclipse'deki hata ayıklama yapılandırmalarınızda uzak java uygulamasını yapılandırın.


0

Öncelikle, catalina.bat dosyasını metin editörü ile açarsanız, şunu görürsünüz: "Bu betikteki değişkenleri ayarlamayın ....." Bu yüzden onu asla bu betikte değiştirmeyin, bunun yerine aşağıdaki adımları yapabilirsiniz:

  1. "Setenv.bat" adıyla yeni bir yarasa dosyası oluşturmanızı tavsiye eder.
  2. Sonra bu yarasa dosyasında aşağıdaki gibi 2 değişken ayarlayın:

    CATALINA_OPTS = "- Xdebug -Xrunjdwp: taşıma = dt_socket, adres = 8000, sunucu = y, askıya alma = n" olarak ayarla

    JPDA_OPTS = "- agentlib: jdwp = taşıma = dt_socket, adres = 8000, sunucu = y, askıya alma = n"

  3. Son olarak şunu cmd'de çalıştırın: "catalina.bat jpda start"

  4. IDE'de, uzaktan hata ayıklama yapılandırması oluşturun ve ana bilgisayarı ilgili sunucu ipine ve bağlantı noktasını 8000'e ayarlayın.


0

Apache-tomcat-8.5.28 sürümü için bunu yapın,

catalina.bat jpda start

Bizim için catalina.bat dosyasında önceden yapılandırılmış varsayılan ayarlar olarak

"% JPDA_OPTS%" == "" değilse goto gotJpdaOpts, JPDA_OPTS = -agentlib: jdwp = transport =% JPDA_TRANSPORT%, adres =% JPDA_ADDRESS%, server = y, suspend =% JPDA_SUSPEND% olarak ayarlandı

Yani başka bir yapılandırmaya gerek yok. Catalina.bat jpda start komutunu çalıştırdığınızda, hata ayıklama portu 8000'in açıldığını görebilirsiniz.



-2

Apache-tomcat-8.5.28 için

JDPA_OPTSaşağıdaki gibi değiştirin ve ardından çalıştırıncatalina.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"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.