Som en fortsättning på min artikel Eclipse Tips och Tricks, och Tommys Breakpoints i Eclipse, så tänkte jag berätta lite om remote-debuggning i Eclipse. Det är en mycket användbar teknik att kunna.
Det finns en massa bra pluginer till Eclipse för att hantera utveckling med olika applikationsservrar och servlet-motorer. Men i många fall behövs inte dessa. Java har länge kunnat öppna en port i VMen för att tillåta en debugger att koppla upp sig. Med Eclipse är det mycket enkelt. Se här bara…
”Tricket” är inte mycket till trick, det är standard Java vi pratar om här. Men jag tycker mig ändå se att det är vanligare att folk försöker hitta den optimala Tomcat-pluginen när det, i min åsikt, inte behövs någon sådan alls.
Först måste du skicka med en uppsättning parametrar till den Java-VM som ska debuggas, till exempel den som kör din Tomcat-applikation. Parametrarna som ska anges är dessa:
-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Djava.compiler=NONE
Vad varja parameter betyder är inte så noga. Googla om du känner att du måste veta. Men lägg märke till portnumret (8787), eftersom vi ska använda det senare.
För att skicka med parametrarna till Tomcats Java-VM på enklaste sätt, så sätter du miljövariabeln JAVA_OPTS till strängen ovan (allt på en rad). (I Windows måste du ha citattecken runt hela parameter-strängen, men annars gör du det på vanligt sätt: högerklicka ”My Computer” -> ”Properties” -> ”Advanced”-fliken -> ”Environment Variables”. När miljövariabeln är satt kan du starta och köra Tomcat på vanligt sätt, t.ex via bin\startup.bat.
Om det inte är Tomcat du vill köra så får du kolla i dokumentationen hur du skickar med parametrar till den Java-VM som används. Sen är det samma princip, oavsett om det är Jetty, Resin, JBoss eller nåt annat.
Det andra och sista momentet som måste till är att skapa en debug-konfiguration i Eclipse. Starta Eclipse, med projektet som du vill debugga. Markera projektet i Package Explorer. Välj ”Run” -> ”Open Debug Dialog”. Högerklicka på ”Remote Java Application” på vänster sida, och välj ”New”. Du kan använda default-värden på allt, utom portnumret, som måste överensstämma med parametrarna vi angav tidigare (8787 i vårt exempel).
Nu är det bara att debugga! Om du redan startat din applikation som vanligt och gjort allt ovan så klickar du bara på ”Debug” i Debug-dialogrutan. Debuggern kopplar upp sig mot den redan körande applikationen och sedan kan du debugga din webbapplikation precis som om du startat den inifrån Eclipse! När du är klar klickar du på ”Disconnect”-knappen i Debug-vyn så fortsätter applikationen att köra utan inblandning från Eclipse! Mycket praktiskt, och helt utan speciella pluginer!