Quick Tip: Κάνοντας remote debugging στον application server

ΟΚ φανταστείται το εξής σενάριο: Εϊναι 3 η ώρα το πρωί και ο μετρητής καφέδων δείχνει 10+. Κλασικά η εφαρμογή έπρεπε να είναι έτοιμη για demo στο UAT περιβάλλον χτες… (ως συνήθως) αλλά πατώντας το Submit σκάει. Το πρόβλημα με το Null pointer exception που φαίνεται στα logs είναι αδύνατο να εντοπιστεί σε τί οφείλεται παρόλο που ο ίδιος κώδικας “παίζει” στο δικό σας PC. Πανικός !!!

Ευτυχώς όμως μπορούμε να κάνουμε remote debugging και να δούμε βήμα προς βήμα που είναι το πρόβλημα. Στο συγκεκριμένο παράδειγμα θα χρησιμοποιήσουμε Glassfish V3 και Eclipse αλλά παρόμοια διαδικασία υπάρχει για άλλους application servers και IDEs.

ΑΝΑΛΥΤΙΚΑ ΒΗΜΑΤΑ

Settings στον Glassfish V3

1) Ανοίγουμε την admin console στη διευθυνση http://localhost:4848 και κάνουμε login

2) Στο δεξιό μενού ανοίγουμε το Configuration => JVM Settings

3) Επιλέγουμε από το tab General τα εξής

    – Debug : ticked

    – Debug Options: -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9009

4) Κάνουμε save και παρατηρούμε ότι πάνω αριστερα εμφανίζεται το “Restart Server” το οποίο και πατάμε. Περιμένουμε την επανεκίννηση.

Settings στον Eclipse

1) Κάνουμε right click πάνω στο project που έχει το source code και επιλέγουμε Debug As => Debug Configuration

2) Από τη λίστα στο αριστερό μενού επιλέγουμε Remote Java Application => “Όνομα του Project“.

3) Στο tab Connect βάζουμε τις τιμές

    – Connection Type: Standard (Socket attach)

    – Host: To IP ή DNS του remote host που είναι ο Glassfish

    – Port: 9009 (να ταιριάζει με αυτή που βάλαμε στα Debug Options του Glassfisg)

    – Πατήστε Apply και μετά Debug (βεβαιωθείτε πριν ότι ο Glassfish έχει ξεκινήσει.

Αυτό ήτανε. Για δοκιμή βάλτε ένα break point κάπου στον κώδικα από όπου ξέρετε ότι “παιρνάει” η ροή του προγραμματος (πχ στον κώδικα του login). Όταν η ροή περάσει από αυτό το σημείο ο remote server θα σταματήσει και θα είναι υπό τον πλήρη έλεγχό σας.

Σημείωση: επειδή το debugging setting είναι στο επίπεδο του JVM , τις ίδιες ακριβώς παραμέτρους δέχονται και οι υπόλοιποι Sun JVM application servers.

Καλή διασκέδαση. 😆

Facebook Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.