- am aflat PID-ul JVM-ului in care e rulata aplicatia (daca ea se numeste "Test", un ps ax | grep Test e suficient)
- am facut un core dump pentru procesul respectiv: gcore pid_no
pid_no). Acesta contine spatiul de adresa al JVM-ului (pe romaneste, toata memoria pe care o accesa JVM-ul in timp ce rula, inclusiv executabilul sau incarcat in memorie) - am apelat which java pentru a determina calea catre JVM-ul default (sa speram ca va aflati in cazul simplu in care ati compilat cu javac-ul corespunzator JVM-ului default)
- acum totul e simplu: jstack
Acesta ne va intoarce cate un stack trace pentru fiecare thread care ruleaza, impreuna cu informatia de debug asociata; drept bonus, are si deadlock detector asociatpath_to_jvm core.pid_no.
miercuri, 24 decembrie 2008
Debug-area unei aplicatii Java in timp ce ruleaza
Zilele astea m-am lovit de urmatoarea problema: o aplicatie Java se blocheaza (aparent) fara motiv. Pentru ca nu am acces la codul sursa al aplicatiei, am procedat in felul urmator (treaba se desfasoara pe un sistem *nix):
Abonați-vă la:
Postare comentarii (Atom)
Niciun comentariu:
Trimiteți un comentariu