Normalerweise müssen Sie den JVM mit Argumenten wie den folgenden starten, um einen Debuger an eine laufende JVM anzuhängen:
> java -Xdebug -Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n
Was kann ich tun, wenn ich einen Prozess debuggen möchte, der nicht im Debug-Modus gestartet wurde?
Diese Situation tritt auf, wenn ein Produktionssystem (dh ohne Debug-Argumente gestartet) einen "zufälligen" Fehler aufweist (ich verwende den Begriff lose). Daher kann ich das JVM nicht mit den entsprechenden Argumenten neu starten, da niemand weiß, wie der Fehler erneut reproduziert werden kann. Ist es in dieser Situation unmöglich, eine Verbindung zur JVM herzustellen?
Zur Verdeutlichung ist es nicht möglich, Tools wie jdb zum Anhängen an bereits ausgeführte JVMs zu verwenden, es sei denn, sie wurden im Debug-Modus gestartet
von der JVM-Manpage
Eine andere Möglichkeit, jdb zu verwenden, besteht darin, es an eine Java-VM anzuhängen, die bereits ausgeführt wird. Eine VM, die mit jdb debuggt werden soll, muss mit den folgenden Optionen gestartet werden: