📅  最后修改于: 2023-12-03 14:43:05.485000             🧑  作者: Mango
JDB (Java Debugging Bridge) 是 Java 自带调试工具,它可以用于通过命令行进行 Java 应用程序调试。其中,JDB-会话是通过命令行与调试器之间建立的交互式会话,可以让程序员在运行时更深入地分析程序运行状态。
在使用 JDB 前,需要在启动 Java 程序时开启调试功能。启动命令如下所示:
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n YourProgram
其中,“address
”参数为连接 debugger 的端口,JDB 使用该端口连接调试器。一般设置为 8000 或者更高的端口,“suspend
”参数为是否在连接调试器之前等待调试器连接(即在等待建立会话之前暂停程序)。如果设置为 y
则表示等待连接,设置为 n
则表示不等待。
启动 JDB 命令如下所示:
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8000
其中,“hostname
”为连接的远程主机名,一般为 localhost
;“port
”为连接的端口,需要与开启 Java 程序时的端口一致。
启动 JDB-会话后,可以使用以下命令进行交互:
help
:列出可用的命令。run
:运行程序,程序将执行到下一个断点或结束。cont
:继续执行程序。step
:单步执行(进入到函数中)。next
:单步执行(不进入到函数中)。list
:列出代码,可以指定要列出哪个文件的哪些行。where
:显示当前所执行的代码行和方法。locals
:列出当前作用域的所有变量。print
:打印一个变量的值。dump
:以指定格式显示某个对象的信息。eval
:执行并打印一个表达式的值。classes
:列出已加载的类。threads
:列出所有的线程。thread
:切换当前线程。suspend
:暂停执行程序,可以在程序运行中随时使用。clear
:取消断点。stop
:终止当前正在执行的程序。