使用JDB调试依赖用户输入的Java程序的相关问题
使用JDB调试依赖用户输入的Java程序的相关问题
嗨,这个问题我之前调试带用户输入的Java程序时也踩过坑!其实JDB完全支持调试依赖System.in(也就是用Scanner类)的程序,你遇到的“Unrecognized Command”错误,是因为你直接在JDB提示符里输入内容时,JDB会把它当成调试命令,而不是传递给你的Java程序。
下面给你说具体的解决方法,步骤很清晰:
先正常准备调试环境
首先确保你的Java代码已经带调试信息编译,执行命令:javac -g YourProgram.java然后启动JDB:
jdb YourProgram用JDB的
input命令传递用户输入
当你的程序运行到需要用户输入的地方(比如Scanner.nextLine()那行),不要直接在控制台敲内容,而是在JDB的提示符里使用input命令,把要输入的内容传给程序。
举个例子:如果你的程序需要你输入“Java Debug”,那就在JDB里敲:input Java Debug这样你的程序就能接收到这段输入,继续执行下去了。
多行输入的处理
如果你的程序需要多行输入,只需要多次使用input命令就行。比如要输入两行内容:input First line of input input Second line of input
给你贴个简单的示例代码和完整调试流程,更直观:
示例Java代码(InputTest.java):
import java.util.Scanner; public class InputTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入你的名字:"); String name = scanner.nextLine(); System.out.println("你好," + name + "!"); scanner.close(); } }
调试步骤:
- 编译:
javac -g InputTest.java - 启动JDB:
jdb InputTest - 设置断点(可选,比如在main方法入口):
stop in InputTest.main - 运行程序:
run - 程序停在断点后,继续执行到输入环节:
cont - 此时程序打印“请输入你的名字:”,在JDB提示符输入:
input 张三 - 就能看到程序输出“你好,张三!”,完成调试啦。
记住核心点:所有要传给程序的用户输入,都必须通过JDB的input命令发送,不能直接在控制台输入,这样就不会再出现“Unrecognized Command”的错误了。
内容来源于stack exchange




