解决JAVA单步调试键盘输入被JDB占用的问题

java

解决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占用的问题》

以上是 解决JAVA单步调试键盘输入被JDB占用的问题 的全部内容, 来源链接: utcz.com/z/395160.html

回到顶部