调试 Java 应用程序时,dbx 处于以下三种模式之一:
Java 模式
JNI 模式
本地模式
当 dbx 处于 Java 模式或 JNI(Java 本地接口)模式时,您可以检查 Java 应用程序的状态(其中包括 JNI 代码),并控制代码的执行。当 dbx 处于本地模式下时,可以检查 C 或 C++ JNI 代码的状态。当前模式(java、jni、native)存储在环境变量 jdbx_mode 中。
在 Java 模式下,可以使用 Java 语法与 dbx 交互,dbx 会使用 Java 语法显示信息。此模式用于调试纯 Java 代码或使用 Java 代码、C JNI 代码或 C++ JNI 代码混合编写的应用程序中的 Java 代码。
在 JNI 模式下,dbx 命令使用本地语法并会影响本地代码,但命令的输出既显示与 Java 有关的状态,也显示本地状态,所以 JNI 模式是一种“混合”模式。此模式用于调试使用 Java 代码、C JNI 代码或 C++ JNI 代码混合编写的应用程序的本地部分。
在本地模式下,dbx 命令仅影响本地程序,与 Java 相关的所有功能将被禁用。此模式用于调试与 Java 无关的程序。
在执行 Java 应用程序的过程中,dbx 会根据情况自动在 Java 模式和 JNI 模式间切换。例如,遇到 Java 断点时,dbx 会自动切换到 Java 模式,而当您从 Java 代码步入 JNI 代码时,它又会切换到 JNI 模式。