Linux makinede çalışan bir java uygulamam var. Java uygulamasını aşağıdakileri kullanarak çalıştırıyorum:
java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n
Bu Linux makinede TCP için 4000 numaralı portu açtım. Windows XP makineden eclipse kullanıyorum ve bu uygulamaya bağlanmaya çalışıyorum. Portu windows'ta da açtım.
Her iki makine de LAN üzerinde ancak hata ayıklayıcıyı Java uygulamasına bağlayamıyorum. Neyi yanlış yapıyorum?
Düzenleme: Bazı kişilerin çağrıyı kesip buraya yapıştırdığını fark ettim. Başlangıçta verdiğim cevap sadece OP için geçerliydi. İşte daha modern bir çağırma stili (daha geleneksel 8000 portunun kullanılması dahil):
java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>
Orijinal cevap aşağıdadır.
Bunu dene:
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp
Burada iki nokta var:
JDK 1.3 veya öncesi için:
-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006
JDK 1.4 için
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006
Daha yeni JDK için:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6006
Lütfen port numarasını ihtiyaçlarınıza göre değiştirin.
java technotes]1'den
5.0'dan itibaren -agentlib:jdwp seçeneği yüklemek ve belirtmek için kullanılır JDWP aracısına seçenekler. 5.0'dan önceki sürümler için -Xdebug ve -Xrunjdwp seçenekleri kullanılır (5.0 uygulaması -Xdebug ve -Xrunjdwp seçeneklerini de destekler ancak 5.0'daki JDWP aracısı JVM TI arayüzünü kullandığı için daha yeni olan -agentlib:jdwp seçeneği tercih edilir. Eski JVMDI arayüzü yerine VM)
JVM Aracı arayüz belgeleri]2'den not edilmesi gereken bir şey daha:
JVM TI, JDK 5.0'da tanıtılmıştır. JVM TI, JDK 6'dan itibaren artık sağlanmayan Java Virtual Machine Profiler Interface (JVMPI) ve Java Virtual Machine Debug Interface'in (JVMDI) yerini almıştır.
Adımlar:
Tüm ayrıntılar için Java uzaktan hata ayıklama hakkında adım adım kılavuz bölümüne bakın.