Fjernfejlfinding med IntelliJ IDEA

1. Introduktion

Fjernfejlfinding giver udviklere mulighed for at diagnosticere unikke fejl på en server eller en anden proces. Det giver midlerne til at spore de irriterende runtime-bugs og identificere præstationsflaskehalse og ressourcedrink.

I denne vejledning ser vi på fjernfejlfinding ved hjælp af JetBrains IntelliJ IDEA. Lad os forberede vores prøveapplikation først ved at ændre JVM.

2. Konfigurer JVM

Vi bruger en Spring-scheduler-prøveapplikation til nemt at oprette forbindelse og tilføje breakpoints til en regelmæssigt planlagt opgave.

Desuden, IntelliJ IDEA leverer vores JVM-parametre som en del af konfigurationen:

-agentlib: jdwp = transport = dt_socket, server = y, suspendere = n, adresse = *: 5005

2.1. JVM-parametre

Udover Java Debug Wire Protocol (JDWP) konfiguration - jdwp = transport = dt_socket - vi ser server, suspendereog adresse parametre.

Det server parameter konfigurerer JVM som målet for vores debugger. Det suspendere parameter fortæller JVM at vente på, at en debugger-klient opretter forbindelse, før den startes. Endelig blev adresse parameter bruger en wildcard-vært og en deklareret port.

Så lad os bygge planlægningsapplikationen:

mvn ren pakke

Og lad os nu starte applikationen, inklusive -agentlib: jdwp parameter:

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

Åbn enhver terminal, og kør kommandoen. Med vores applikation startet op, lad os nu skifte til IntelliJ.

3. Kør konfiguration i IntelliJ IDEA

Dernæst opretter vi i IntelliJ en ny kørekonfiguration til fjernfejlfinding:

Nu hvor vores applikation kører, lad os starte den eksterne fejlretningssession ved at klikke på Fejlfinde knap.

4. Fjernfejlfinding

Dernæst åbner vi ScheduleTask fil og placer et brudpunkt ved linje 36 vist her:

public void reportCurrentTime () {log.info ("Tiden er nu {}", dateFormat.format (ny dato ())); }

Da opgaven udføres hvert femte sekund, stopper den kort efter, at den er tilføjet. Som et resultat kan vi nu gå igennem hele applikationen.

Ved opstart af applikationer ændrer vi suspendere flag til n og placer et brudpunkt i vigtigste metode til Ansøgning.

4.1. Begrænsninger

Undertiden forvirrer logning og output os, når vi fjerner fejlretning. Logfilerne sendes ikke til IDE-konsollen, så en ekstern logfil kan bruges og kortlægges i IDE for mere robust fejlfindingsevne.

Husk også, at mens ekstern debugging er et meget kraftfuldt værktøj, et produktionsmiljø er ikke et passende mål for debugging.

5. Konklusion

Som vi dækkede i denne artikel, er fjernfejlretning med IntelliJ let at konfigurere og bruge i et par korte trin.

Vi så på, hvordan vi konfigurerer vores applikation JVM til debugging samt nogle begrænsninger for dette vigtige værktøj i vores udviklerværktøjskasse.

Eksempelapplikationen kan findes på GitHub.