Wie richte ich ein Remote-Debugging in IntelliJ IDEA ein?

Melden
  1. Einführung
  2. Vorbereitung der zu debuggenden Anwendung
  3. Konfiguration von IntelliJ IDEA
  4. Verbindung und Debugging
  5. Fehlerbehebung
  6. Zusammenfassung

Einführung

Remote-Debugging ist eine nützliche Methode, um Java-Anwendungen, die auf einem entfernten Server oder einer anderen Maschine ausgeführt werden, direkt aus Ihrer lokalen IntelliJ IDEA-Umgebung zu debuggen. Dies ermöglicht es Ihnen, Breakpoints zu setzen, den Programmablauf zu verfolgen und Variablenwerte einzusehen, ohne dass die Anwendung lokal laufen muss.

Vorbereitung der zu debuggenden Anwendung

Damit IntelliJ IDEA eine Verbindung zu einer entfernten Java-Anwendung herstellen kann, muss die JVM dieser Anwendung mit speziellen Debugging-Optionen gestartet werden. Diese Optionen aktivieren den Debug-Port und erlauben eingehende Debug-Verbindungen.

Üblicherweise startet man die Anwendung mit der folgenden JVM-Option (Beispiel für Java 8 oder neuer):

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

Diese Option bewirkt, dass die JVM einen Debug-Server auf Port 5005 öffnet. Dabei bedeutet:

transport=dt_socket nutzt Socket-Kommunikation, server=y stellt die JVM als Debug-Server ein, suspend=n heißt, dass die JVM nicht auf den Debugger wartet und sofort startet, und address=5005 definiert den Port.

Falls die zu debuggende Anwendung auf einem entfernten Server läuft, müssen Sie außerdem sicherstellen, dass die Firewall diesen Port nicht blockiert und Sie über das Netzwerk darauf zugreifen können.

Konfiguration von IntelliJ IDEA

Um in IntelliJ IDEA eine Remote-Debugging-Sitzung einzurichten, öffnen Sie zuerst den Bereich zum Hinzufügen oder Bearbeiten von Debug- oder Run-Konfigurationen. Das erreichen Sie über das Menü Run > Edit Configurations... oder über das Dropdown-Menü oben rechts in der IDE.

Dort wählen Sie den Typ Remote JVM Debug (oder Remote in älteren Versionen) aus und erzeugen eine neue Konfiguration.

In den Einstellungen geben Sie einen aussagekräftigen Namen für die Konfiguration ein. Wichtig sind die Felder für Host und Port, die den Ort der zu debuggenden JVM angeben. Üblicherweise ist der Host die IP-Adresse oder der Hostname des entfernten Servers, auf dem der Debug-Dienst läuft, und der Port ist der selbe Port, den Sie zuvor in der JVM-Option angegeben haben, zum Beispiel 5005.

Die Debug-Konfiguration kann zusätzlich Optionen enthalten, z. B. die Auswahl des Transport-Protokolls (socket) oder ob die Verbindung am Start aufgerufen werden soll. Standardmäßig reicht es, Host und Port korrekt einzutragen.

Verbindung und Debugging

Nachdem die Remote-Debug-Konfiguration angelegt wurde, können Sie sie starten, indem Sie auf den Debug-Button neben der Konfiguration klicken. IntelliJ IDEA versucht dann, eine Verbindung zum Remote-Debug-Server aufzubauen.

Wenn die Verbindung erfolgreich ist, können Sie in IntelliJ Breakpoints setzen, den Programmablauf schrittweise verfolgen oder Variablen inspizieren. Die Anwendung auf dem entfernten Server verhält sich so, als ob sie lokal debuggt wird.

Fehlerbehebung

Sollte die Verbindung nicht zustande kommen, überprüfen Sie zuerst, ob die JVM mit den richtigen Debug-Optionen gestartet wurde und der Debug-Port offen und nicht durch eine Firewall blockiert ist. Stellen Sie ferner sicher, dass Host und Port in der IntelliJ-Konfiguration exakt stimmen und keine Netzwerkrestriktionen (z. B. VPN, Firewall-Regeln) bestehen.

Wenn die JVM mit suspend=y gestartet wurde, wartet diese vor dem Start auf eine Debug-Verbindung. Dies kann bei erstmaligem Debugging sinnvoll sein, um frühzeitig Breakpoints zu treffen.

Zusammenfassung

Das Remote-Debugging in IntelliJ IDEA besteht im Kern daraus, die JVM, die Sie debuggen wollen, mit Debug-Optionen zu starten, sodass sie als Debug-Server fungiert, und in IntelliJ eine entsprechende Remote-Debug-Konfiguration anzulegen, die sich mit diesem Debug-Server verbindet. So können Sie Ihre Anwendung bequem aus der gewohnten Entwicklungsumgebung heraus untersuchen, selbst wenn sie auf einer entfernten Maschine läuft.

0

Kommentare