Jako administrator systemu czasami spotykam się z sytuacjami, w których program zachowuje się nienormalnie, nie generując wcale błędów lub tworząc nonsensowne komunikaty o błędach.
W przeszłości - zanim pojawiła się java - istniały dwa środki zaradcze:
- Jeśli nic innego nie pomoże - RTFM ;-)
- Jeśli nawet 1. nie pomaga - prześledzić wywołania systemowe i zobaczyć, co się dzieje
Zwykle używam strace -f
do tego zadania w systemie Linux (inne systemy operacyjne mają podobne narzędzia do śledzenia). Teraz, chociaż zwykle działa to dobrze w przypadku każdego staromodnego programu, ślad staje się bardzo niewyraźny, gdy robi się to samo w procesie Java . Jest tak wiele wywołań systemowych pozornie niezwiązanych z żadnym rzeczywistym działaniem, że przeszukiwanie takiego zrzutu jest okropne.
Czy są lepsze sposoby na to (jeśli kod źródłowy nie jest dostępny)?