You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用JDB调试依赖用户输入的Java程序的相关问题

使用JDB调试依赖用户输入的Java程序的相关问题

嗨,这个问题我之前调试带用户输入的Java程序时也踩过坑!其实JDB完全支持调试依赖System.in(也就是用Scanner类)的程序,你遇到的“Unrecognized Command”错误,是因为你直接在JDB提示符里输入内容时,JDB会把它当成调试命令,而不是传递给你的Java程序。

下面给你说具体的解决方法,步骤很清晰:

  1. 先正常准备调试环境
    首先确保你的Java代码已经带调试信息编译,执行命令:

    javac -g YourProgram.java
    

    然后启动JDB:

    jdb YourProgram
    
  2. 用JDB的input命令传递用户输入
    当你的程序运行到需要用户输入的地方(比如Scanner.nextLine()那行),不要直接在控制台敲内容,而是在JDB的提示符里使用input命令,把要输入的内容传给程序。
    举个例子:如果你的程序需要你输入“Java Debug”,那就在JDB里敲:

    input Java Debug
    

    这样你的程序就能接收到这段输入,继续执行下去了。

  3. 多行输入的处理
    如果你的程序需要多行输入,只需要多次使用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

火山引擎 最新活动