Normalmente per collegare un debuger a una jvm in esecuzione è necessario avviare la jvm con argomenti come i seguenti:
> java -Xdebug -Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n
Ora, se voglio eseguire il debug di un processo che non è stato avviato in modalità debug, cosa posso fare?
Questa situazione si verifica quando un sistema di produzione (cioè avviato senza argomenti di debug) mostra un bug "casuale" (uso il termine liberamente). Quindi non posso riavviare la jvm con gli argomenti appropriati, perché nessuno sa come riprodurre nuovamente il bug. È impossibile collegarsi alla JVM in questa situazione?
Giusto per chiarire che non è possibile utilizzare strumenti come jdb per collegarsi a JVM già in esecuzione a meno che non siano stati avviati in modalità debug
dalla pagina man di JVM
Un altro modo per utilizzare jdb è collegarlo a una Java VM già in esecuzione. Una VM di cui eseguire il debug con jdb deve essere avviata con le seguenti opzioni: