在完成本周任务时, 编写的代码中含有 Scanner 类, 编译及运行过程均正确, 但使用 JDB 单步调试时, 运行到输入行无法在 JDB 内部输入变量值.
解决方案
错误原因: JDB 占用了控制台, 导致无法在调试窗口进行输入输出操作.
解决步骤:
1. 打开两个终端, 一个用来远程监听, 一个用来 JDB 单步调试.
2. 在终端 1 输入以下命令进行监听远程控制:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y Calculation
注意这里的文件目录, 一定放一个. class 文件在当前目录下, 而不仅仅编译到 bin 中
3. 在终端 2 输入以下命令建立本机与监听窗口的联系, 并开始 JDB 调试:
(简单直白的讲就是把原来
jdb -classpath .:./bin files
的命令替换成这个就行)
jdb -connect com.sun.jdi.SocketAttach:port=8000,hostname=localhost
4. 使用 next 命令运行到含有 Scanner 类对象的输入行时, 转换到终端 1 进行变量输入, 再转到终端 2, 此时已经完成输入, 程序可以向下运行.
5. 运行完程序后输入及输出都可以在终端 1 中找到结果.
参考链接
看不懂我写了啥的同学看这里.
王老师录的视频.(第二周《JDB 调试. mp4》)
这是一篇博客.《解决键盘输入被 JDB 占用的问题》
来源: http://www.bubuko.com/infodetail-3193757.html