可以将 dbx 连接到正在运行的 Java 应用程序,前提是在启动该应用程序时指定了下例所示的选项。启动应用程序后,可以将 dbx 命令(请参见dbx 命令) 与正在运行的 Java 进程的进程 ID 结合使用以开始调试。
$ java -Djava.compiler=NONE -Xdebug -Xnoagent -Xrundbx_agent myclass.class $ dbx - 2345 |
为了使 JVM 软件能够找到 libdbx_agent.so,需要在运行 Java 应用程序前将适当路径添加到 LD_LIBRARY_PATH 中:
如果在运行 Solaris OS 的系统上使用 32 位版本的 JVM 软件,则添加 /installation_directory/SUNWspro/lib/libdbx_agent.so
如果在运行 Solaris OS 且基于 SPARC 的系统上使用 64 位版本的 JVM 软件,则将 /installation_directory/SUNWspro/lib/v9/libdbx_agent.so 添加至 LD_LIBRARY_PATH。
如果在运行 Linux OS 且基于 x64 的系统上使用 64 位版本的 JVM 软件,则将 /installation_directory/sunstudio12/lib/amd64/libdbx_agent.so 添加至 LD_LIBRARY_PATH。
installation_directory 是 Sun Studio 软件的安装位置。
将 dbx 连接到正在运行的应用程序时,dbx 会以 Java 模式开始调试应用程序。
如果 Java 应用程序需要 64 位目标库,请在启动应用程序时包括 -d64 选项。之后,将 dbx 连接到应用程序时,dbx 将使用运行该应用程序的 64 位 JVM 软件。
$ java -Djava.compiler=NONE -Xdebug -Xnoagent -Xrundbx_agent -d64 myclass.class $ dbx - 2345 |