- 一个基于JDB且对其使用体验进行优化
- 支持
JDK8以及之后的版本
- 这部分由
jline库功能来进行实现- 增加了控制台的控制按键的实现(包括且不限于)
ctrl + u,清空输入行数据.ctrl + e,移动光标到行末.ctrl + l,清空整个控制台屏幕.- 能够在输入时自由的移动光标,而非将对应移动光标按键读取为输入内容.
- 增加了命令的提示与补全.
- 在输入时,通过
tab按键来获取对应的命令提示 - 在
jline的基础上,添加了类名称检索的补全,可以按照提示来找到想找的类名称.
- 在输入时,通过
- 增加了控制台的控制按键的实现(包括且不限于)
- 通过字节码修改覆盖掉原来
JDB的主类com.sun.tools.example.debug.tty.TTY- 主要是修改了读取控制台输入的逻辑,由
jline来进行读取输入内容.
- 主要是修改了读取控制台输入的逻辑,由
JDK8- 将程序需要使用到的
四个包的路径地址组成classpath. - 通过命令行启动该程序
java -cp Fiber.jar:jline.jar:tools.jar:asm.jar org.carl.fiber.JDB
- 由于只对JDB读取输入内容进行了修改,并未对其内部读取命令后的执行进行修改.故其操作方式与JDB一致.
- 将程序需要使用到的
JDK9+- JDK在版本9之后的更新,不再提供了
${JAVA_HOME}/lib/tools.jar. - 需要使用三个包
jline.jar,asm.jar,Fiber.jar,组成classpath. - 添加反射权限
--add-opens jdk.jdi/com.sun.tools.example.debug.tty=ALL-UNNAMED放开反射权限 - 完整命令为
java --add-opens jdk.jdi/com.sun.tools.example.debug.tty=ALL-UNNAMED -cp Fiber.jar:jline.jar:asm.jar org.carl.fiber.JDB
- JDK在版本9之后的更新,不再提供了