解决JAVA单步调试键盘输入被JDB占用的问题
解决JAVA单步调试键盘输入被JDB占用的问题 |
问题来源:
- 在完成本周任务时,编写的代码中含有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占用的问题》