Frage

Ich habe eine Java-Anwendung auf Linux-Maschine läuft. Ich betreibe die Java-Anwendung mit dem folgenden:

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n

Ich habe Port 4000 für TCP auf diesem Linux-Rechner geöffnet. Ich benutze Eclipse von Windows XP-Computer und versuchen, diese Anwendung zu verbinden. Ich habe auch den Hafen in Fenster geöffnet.

Beide Maschinen im LAN sind, aber ich kann nicht scheinen, um den Debugger an die Java-Anwendung zu verbinden. Was mache ich falsch?

War es hilfreich?

Lösung

Edit: Ich habe bemerkt, dass einige Leute Ausschneiden und Einfügen den Aufruf hier. Die Antwort gab ich ursprünglich nur für den OP relevant. Hier ist ein moderner Stil des Aufrufs (einschließlich mit dem konventionelleren Hafen von 8000):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>

Original Antwort folgt.


Versuchen Sie folgendes:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp

Zwei Punkte hier:

  1. Keine Leerzeichen in der runjdwp Option.
  2. Optionen kommen vor dem Klassennamen. Alle Argumente Sie nach dem Klassennamen haben, sind Argumente für Ihr Programm!

Andere Tipps

Für JDK 1.3 oder früher:

-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006

Für JDK 1.4

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

Für neuere JDK:

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

Bitte geben Sie die Portnummer ändern, basierend auf Ihren Bedürfnissen.

java technotes

  

Von 5,0 ab der -agentlib: JDWP Option wird zum Laden und geben Sie   Optionen zum JDWP Mittel. Für Versionen vor 5.0, die -Xdebug und   -Xrunjdwp Optionen verwendet werden (die 5.0-Implementierung unterstützt auch die -Xdebug und -Xrunjdwp Optionen, aber die neuere -agentlib: JDWP Option vorzuziehen ist, als das JDWP Mittel in 5.0 die JVM TI-Schnittstelle zur uses   VM eher als die ältere JVMDI Schnittstelle)

Eine weitere Sache zu beachten, von JVM-Tool-Schnittstelle Dokumentation :

  

JVM TI wurde in JDK 5.0 eingeführt. JVM TI ersetzt die Java Virtual Machine Profiler Interface (JVMPI) und die Java Virtual Machine Debug Interface (JVMDI), die, wie von JDK 6, sind nicht mehr vorgesehen.

Schritte:

  1. Starten Sie Ihre Remote-Java-Anwendung mit Debugging-Optionen der wie in obigem Beitrag.
  2. Konfigurieren von Eclipse für Remote-Debugging von Host und Port angeben.
  3. Starten Sie Remote-Debugging in Eclipse und wartet für die Verbindung erfolgreich zu sein.
  4. Setup Haltepunkt und debuggen.
  5. Wenn Sie von Beginn der Anwendung Verwendung debuggen suspendiert = y, wird diese unterbrochen Remote-Anwendung, bis Sie von Eclipse an.

Siehe Schritt für Schritt Anleitung auf Java Remote Debuggen für weitere Informationen.

Antwort Abdeckung Java> = 9:

Für Java 9+, muss die JVM-Option eine geringfügige Änderung, indem Sie die Adresse mit der IP-Adresse des Computers voran die JVM, oder einfach nur * Hosting:

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

Dies ist auf eine Veränderung festgestellt, in https://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435 .

Für Java <9, die Portnummer genügt, um zu verbinden.

Dies ist, wie Sie sollten Setup Eclipse-Debugger für Remote-Debugging:

Eclipse-Einstellungen:

1.Click den Run Button
2.Select den Debug-Konfigurationen
3. Wählen Sie die „Remote Java Application“
4.New Konfiguration

  • Name: GatewayPortalProject
  • Projekt: GatewayPortal-Portlet
  • Verbindungstyp: Sockel befestigen
  • Verbindungseigenschaften: i) localhost ii) 8787

Für JBoss:

1.Change der /path/toJboss/jboss-eap-6.1/bin/standalone.conf in Ihrem vm wie folgt:    Kommentar- der folgenden Zeile durch die # Entfernung:

JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"

Für Tomcat:

catalina.bat Datei:

Schritt 1:

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

Schritt 2:

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

Schritt 3: Führen Sie Tomcat von Eingabeaufforderung wie folgt:

catalina.sh jpda start

Dann müssen Sie auf Haltepunkte in den Java-Klassen Sie debuggen wollen.

Ich möchte betonen, dass Reihenfolge der Argumente ist wichtig, .

Für mich java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar app.jar Befehl öffnet Debugger-Port ,

aber java -jar app.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 Befehl nicht .

Die beste Möglichkeit, die Debuggen Protokoll zu erstellen und Protokolle zu analysieren. Aber in einigen Fällen müssen wir Debug-Web-Anwendung auf dem Server eingesetzt werden.

Siehe Remotely debuggen eines Java-Web-Anwendung Link. Vollständiger Fluss des Remote-Debugging wird hier beschrieben. Hoffe, es wird helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top