Ist es möglich, den IntelliJ IDEA-Debugger an einen laufenden Java-Prozess anzuhängen? Wenn ja, wie?
Ist es möglich, den IntelliJ IDEA-Debugger an einen laufenden Java-Prozess anzuhängen? Wenn ja, wie?
Antworten:
Ja! So richten Sie es ein.
Erstellen Sie eine Remote-Run-Konfiguration:
Die obige Konfiguration enthält drei schreibgeschützte Felder. Dies sind Optionen, die die JVM anweisen, Port 5005 für das Remote-Debugging zu öffnen, wenn Sie Ihre Anwendung ausführen. Fügen Sie die entsprechende Option zu den JVM-Optionen der Anwendung hinzu, die Sie debuggen. Eine Möglichkeit, dies zu tun, wäre folgende:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
Es hängt jedoch davon ab, wie Sie Ihre Anwendung ausführen. Wenn Sie nicht sicher sind, welche der drei für Sie zutrifft, beginnen Sie mit der ersten und gehen Sie die Liste durch, bis Sie diejenige finden, die funktioniert.
Sie können zu ändern suspend=n
, suspend=y
um Ihre Anwendung zu zwingen, zu warten, bis Sie eine Verbindung zu IntelliJ herstellen, bevor sie gestartet wird. Dies ist hilfreich, wenn der Haltepunkt, den Sie erreichen möchten, beim Start der Anwendung auftritt.
Starten Sie Ihre Anwendung wie gewohnt, wählen Sie dann in IntelliJ die neue Konfiguration aus und klicken Sie auf "Debuggen".
IntelliJ stellt eine Verbindung zur JVM her und initiiert das Remote-Debugging.
Sie können die Anwendung jetzt debuggen, indem Sie Ihrem Code bei Bedarf Haltepunkte hinzufügen. Die Ausgabe der Anwendung wird weiterhin dort angezeigt, wo sie zuvor ausgeführt wurde, aber Ihre Haltepunkte werden in IntelliJ angezeigt.
Remote
ist es in der Community Edition nicht verfügbar? Ich benutze die kostenpflichtige Version. Kann jemand mit der Community Edition bestätigen?
System.out.println
in IntelliJ beim Remote-Debugging abrufen können ?
Es ist möglich, aber Sie müssen einige JVM-Flags hinzufügen, wenn Sie Ihre Anwendung starten.
Sie müssen die Remote-Debug-Konfiguration hinzufügen: Konfiguration bearbeiten -> Remote.
Dann finden Sie im angezeigten Dialogfenster Parameter, die Sie zur Programmausführung hinzufügen müssen, wie:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Wenn Ihre Anwendung gestartet wird, können Sie Ihren Debugger anhängen. Wenn Ihre Anwendung warten soll, bis der Debugger verbunden ist, ändern Sie einfach das Suspend-Flag in y ( suspend=y
)
in AndroidStudio oder Idee
"VM-Optionen" hinzufügen Konfiguration
“-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”
"Adresse speichern
"
Außerdem verwende ich die Tomcat-GUI-App (in meinem Fall: C: \ tomcat \ bin \ Tomcat9w.bin).
Gehen Sie zur Registerkarte Java :
Legen Sie Ihre Java-Eigenschaften fest, zum Beispiel:
Java virtuelle Maschine
C: \ Programme \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll
Java virtuelle Maschine
C: \ tomcat \ bin \ bootstrap.jar; C: \ tomcat \ bin \ tomcat-juli.jar
Java-Optionen :
-Dcatalina.home = C: \ tomcat
-Dcatalina.base = C: \ tomcat
-Djava.io.tmpdir = C: \ tomcat \ temp
-Djava.util.logging.config.file = C: \ tomcat \ conf \ logging.properties
-agentlib: jdwp = transport = dt_socket, server = y, suspend = n, address = *: 8000
Java 9-Optionen :
--add-opens = java.base / java.lang = ALL-UNNAMED
--add-opens = java.base / java.io = ALL-UNNAMED
--add-opens = java.rmi / sun.rmi.transport = ALL-UNNAMED