Foutopsporing op afstand met IntelliJ IDEA

1. Inleiding

Foutopsporing op afstand geeft ontwikkelaars de mogelijkheid om unieke bugs op een server of een ander proces te diagnosticeren. Het biedt de middelen om die vervelende runtime-bugs op te sporen en prestatieknelpunten en resource-sinks te identificeren.

In deze zelfstudie bekijken we foutopsporing op afstand met JetBrains IntelliJ IDEA. Laten we eerst onze voorbeeldtoepassing voorbereiden door de JVM te wijzigen.

2. Configureer de JVM

We gebruiken een voorbeeldtoepassing van Spring Scheduler om eenvoudig verbinding te maken en onderbrekingspunten toe te voegen aan een regelmatig geplande taak.

Verder IntelliJ IDEA biedt onze JVM-parameters als onderdeel van de configuratie:

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

2.1. JVM-parameters

Naast de Java Debug Wire Protocol (JDWP) -configuratie - jdwp = transport = dt_socket - we zien de server, opschorten, en adres parameters.

De server parameter configureert de JVM als het doel voor onze debugger. De opschorten parameter vertelt de JVM om te wachten tot een debugger-client verbinding maakt voordat deze wordt opgestart. eindelijk, de adres parameter gebruikt een jokertekenhost en een gedeclareerde poort.

Laten we dus de planner-applicatie bouwen:

mvn schoon pakket

En laten we nu de applicatie starten, inclusief het -agentlib: jdwp parameter:

java -jar -agentlib: jdwp = transport = dt_socket, server = y, suspend = n, adres = *: 5005 \ target / gs-scheduling-taken-0.1.0.jar

Open een willekeurige terminal en voer de opdracht uit. Nu onze applicatie is opgestart, gaan we nu over op IntelliJ.

3. Voer de configuratie uit in IntelliJ IDEA

Vervolgens maken we in IntelliJ een nieuwe uitvoeringsconfiguratie voor foutopsporing op afstand:

Nu onze applicatie actief is, kunnen we de foutopsporingssessie op afstand starten door op het Foutopsporing knop.

4. Foutopsporing op afstand

Vervolgens openen we het ScheduleTask bestand en plaats een onderbrekingspunt op regel 36 die hier wordt weergegeven:

public void reportCurrentTime () {log.info ("De tijd is nu {}", dateFormat.format (nieuwe Date ())); }

Omdat de taak elke vijf seconden wordt uitgevoerd, stopt deze kort nadat deze is toegevoegd. Hierdoor kunnen we nu de hele applicatie doorlopen.

Voor problemen met het opstarten van applicaties wijzigen we de opschorten vlag naar n en plaats een breekpunt in het hoofd methode van Toepassing.

4.1. Beperkingen

Soms verwarren logboekregistratie en uitvoer ons bij debuggen op afstand. De logboeken worden niet naar de IDE-console gestuurd, dus een extern logbestand kan worden gebruikt en in de IDE worden toegewezen voor een krachtigere foutopsporing.

Onthoud ook dat, hoewel foutopsporing op afstand een zeer krachtig hulpmiddel is, een productieomgeving is geen geschikt doelwit voor foutopsporing.

5. Conclusie

Zoals we in dit artikel hebben besproken, is foutopsporing op afstand met IntelliJ eenvoudig in te stellen en in een paar korte stappen te gebruiken.

We hebben gekeken hoe we onze applicatie JVM kunnen configureren voor foutopsporing, evenals enkele beperkingen van deze belangrijke tool in onze ontwikkelaarstoolbox.

De voorbeeldtoepassing is te vinden op GitHub.