Ich habe Port 4000 für TCP auf dieser Linux-Maschine geöffnet. Ich verwende Eclipse von einem Windows XP-Computer und versuche, eine Verbindung zu dieser Anwendung herzustellen. Ich habe den Port auch in Windows geöffnet.
Beide Maschinen befinden sich im LAN, aber ich kann den Debugger anscheinend nicht mit der Java-Anwendung verbinden. Was mache ich falsch?
stackoverflow.com/a/46171836/1619407
– Alessandro Giusa
12. September 2017 um 8:47 Uhr
Chris Jester-Young
Bearbeiten: Mir ist aufgefallen, dass einige Leute den Aufruf hier ausschneiden und einfügen. Die Antwort, die ich ursprünglich gegeben habe, war nur für das OP relevant. Hier ist ein modernerer Aufrufstil (einschließlich der Verwendung des konventionelleren Ports 8000):
@DJGummikuh Schön! Ich habe den Beitrag aktualisiert, um den neueren Stil zu verwenden -agentlib Option für Ihr Schneid- und Klebevergnügen. 🙂
– Chris Jester-Young
9. August 2015 um 3:23 Uhr
Muss der Quellcode für die Remote-App immer auf dem Computer vorhanden sein, auf dem wir das Remote-Debugging durchführen?
– MasterJoe
12. Juli 2017 um 23:58 Uhr
Du musst wissen der Quellcode. Entweder Sie haben die .java-Dateien oder Sie haben die .jar / .class-Dateien mit dem Decompiler kombiniert. IDE wie Eclipse kann einen Decompiler wie JDecompiler installiert haben, sodass Sie die .class-Datei debuggen können, als wäre es eine .java-Datei (mit Ausnahme der Kommentare).
– Iwan Satria
3. Februar 2018 um 13:04 Uhr
Es lohnt sich, einen Kommentar von diesem stackoverflow.com/a/138518/500902 zu wiederholen: “Da Java 9 “Adresse=1044” nicht immer auf allen Schnittstellen lauscht. “Adresse=*:1044″ bewirkt, dass sich Java 9+ wie Java 8 verhält”. Erlauben Sie das Debuggen von einem anderen Host
Ab Version 5.0 wird die Option -agentlib:jdwp verwendet, um Optionen für den JDWP-Agenten zu laden und anzugeben. Für Versionen vor 5.0 werden die Optionen -Xdebug und -Xrunjdwp verwendet (die 5.0-Implementierung unterstützt auch die Optionen -Xdebug und -Xrunjdwp, aber die neuere Option -agentlib:jdwp ist vorzuziehen, da der JDWP-Agent in 5.0 die JVM TI-Schnittstelle dazu verwendet die VM und nicht die ältere JVMDI-Schnittstelle)
JVM TI wurde mit JDK 5.0 eingeführt. JVM TI ersetzt das Java Virtual Machine Profiler Interface (JVMPI) und das Java Virtual Machine Debug Interface (JVMDI), die ab JDK 6 nicht mehr bereitgestellt werden.
Folgendes funktioniert mit den Standardeinstellungen von Eclipse: -agentlib:jdwp=transport=dt_socket,server=y,address=8000
– Eisbecher
4. September 2014 um 9:30 Uhr
Gaurav
Schritte:
Starten Sie Ihre Remote-Java-Anwendung mit Debugging-Optionen, wie im obigen Beitrag beschrieben.
Konfigurieren Sie Eclipse für das Remote-Debugging, indem Sie Host und Port angeben.
Starten Sie das Remote-Debugging in Eclipse und warten Sie, bis die Verbindung hergestellt ist.
Haltepunkt einrichten und debuggen.
Wenn Sie vom Start der Anwendung an debuggen möchten, verwenden Sie suspend=y , dies hält die Remote-Anwendung angehalten, bis Sie eine Verbindung von Eclipse herstellen.
Die “Schritt-für-Schritt-Anleitung” im Link verwendet einige veraltete Optionen.
– Joshua Goldberg
25. September 2020 um 18:04 Uhr
Antwort zu Java >= 9:
Für Java 9+ muss die JVM-Option geringfügig geändert werden, indem der Adresse die IP-Adresse des Computers vorangestellt wird, der die JVM hostet, oder einfach nur *:
Für Java < 9 reicht die Portnummer aus, um eine Verbindung herzustellen.
Herr Schwarz
Das möchte ich betonen Die Reihenfolge der Argumente ist wichtig.
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar app.jar Befehl öffnet den Debugger-Port,
aber java -jar app.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 Befehl nicht. Es wird alles danach passieren app.jar als Kommandozeilenargumente.
Ich vermute, das liegt daran, dass in Ihrem zweiten Beispiel alles nach “app.jar” als Argumente an Ihre Hauptmethode übergeben wird
– xoX Zeus Xox
13. November 2019 um 13:31 Uhr
@xoXZeusXox ha ha. Ja, es ging als Argumente durch. Danke für die Erwähnung.
– Herr Schwarz
19. November 2019 um 21:45 Uhr
Das scheint neu für Java 11 zu sein
– Petronius
29. Oktober 2020 um 12:10 Uhr
Pritam Banerjee
So sollten Sie Eclipse Debugger für das Remote-Debugging einrichten:
Eclipse-Einstellungen:
1.Klicken Sie auf die Schaltfläche Ausführen
2.Wählen Sie die Debug-Konfigurationen aus
3.Wählen Sie die „Remote-Java-Anwendung“
4.Neue Konfiguration
Name: GatewayPortalProject
Projekt : GatewayPortal-Portlet
Verbindungstyp: Socket Attach
Verbindungseigenschaften: i) localhost ii) 8787
Für JBoss:
1. Ändern Sie die /path/toJboss/jboss-eap-6.1/bin/standalone.conf in Ihrer VM wie folgt: Kommentieren Sie die folgende Zeile aus, indem Sie das # entfernen:
ist nicht genug, weil das jetzt (zumindest auf Unix/OSX-Rechnern) an localhost bindet, sodass Sie nur von localhost aus eine Verbindung herstellen können.
Wenn Sie versuchen, dies aus der Ferne zu debuggen, wird Ihnen die Verbindung dafür verweigert. Ab Java 9 müssen Sie meiner Meinung nach Folgendes tun:
stackoverflow.com/a/46171836/1619407
– Alessandro Giusa
12. September 2017 um 8:47 Uhr