Debug delle applicazioni Java

Per eseguire il debug dei programmi Java™ , è possibile utilizzare l'applicazione JDB (Java Debugger) o altri programmi di debug che comunicano utilizzando il JPDA (Java Platform Debugger Architecture) fornito da SDK per il sistema operativo.

Le informazioni sulla diagnosi dei problemi utilizzando Java sono disponibili in Risoluzione dei problemi e supporto.

Nota: su sistemi AIX® , SDK include un plug-in per il programma di debug AIX , DBX. Sebbene il plug-in DBX sia fornito come parte dell'SDK, non è supportato. Tuttavia, IBM® accetterà i report di bug.

Il programma di debug Java

Il JDB è incluso in SDK. Il debugger viene avviato con il comando jdb ; si collega alla JVM utilizzando JPDA.

Per eseguire il debug di un'applicazione Java:
  1. Avviare la JVM con le seguenti opzioni:
    • Su sistemi Windows:
      java -agentlib:jdwp=transport=dt_shmem,server=y,address=<port> <class>
    • Su altri sistemi:
      java -agentlib:jdwp=transport=dt_socket,server=y,address=<port> <class>

    La JVM viene avviata, ma l'esecuzione viene sospesa prima di avviare l'applicazione Java.

  2. In una sessione separata, è possibile collegare il debugger alla JVM:
    jdb -attach <port>
    Il programma di debug si collegherà alla JVM ed è ora possibile immettere una serie di comandi per esaminare e controllare l'applicazione Java; ad esempio, immettere run per consentire l'avvio dell'applicazione Java.
Per eseguire il debug di applicazioni Java in esecuzione su stazioni di lavoro remote:
JPDA utilizza un socket TCP/IP per connettersi alla JVM remota.
  1. Avviare la JVM con le seguenti opzioni:
    • Su sistemi Windows:
      java -agentlib:jdwp=transport=dt_shmem,server=y,address=<port> <class>
    • Su altri sistemi:
      java -agentlib:jdwp=transport=dt_socket,server=y,address=<port> <class>

    La JVM viene avviata, ma l'esecuzione viene sospesa prima di avviare l'applicazione Java.

  2. Collegare il programma di debug alla JVM remota:
    • Su sistemi Windows:
      jdb -connect com.sun.jdi.SocketAttach:hostname=<host>,port=<port>
    • Su altri sistemi:
      jdb -attach <host>:<port>
Per ulteriori informazioni: