问题
今天使用JDB调试一段代码时遇到一个问题。这段代码用到了Scanner(System.in)来接收键盘输入。若直接使用jdb命令调试,程序执行到键盘输入那一行代码时,在控制台输入后会提示“无法识别的命令”,这是因为JDB占用了控制台,如下图。
百度了下解决方案(http://bbs.youkuaiyun.com/topics/370183909),记录如下:
假设目标源文件为xx.java
在控制台1用服务的方式启动程序
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y xx
打开另一个控制台,远程调试(控制台2)
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8000
这样就可以分别在控制台1和控制台2进行输入和调试。