使用jdb命令行调试时无法显示待执行代码行的问题
解决JDB单步调试不显示待执行代码行的问题
1. 编译时必须生成调试符号
JDB需要依赖编译时生成的调试信息才能关联行号与代码内容,你当前的编译命令大概率没添加调试参数。重新编译代码时加上-g参数:
javac -g Main.java
-g会生成完整的调试符号(行号、源文件引用、局部变量信息),这是显示代码内容的核心前提。
2. 在JDB中查看对应代码行的两种方式
手动执行list命令
每次执行step完成后,输入list就能显示当前行附近的代码:
main[1] step Step completed: "thread=main", Main.main(), line=4 bci=8 main[1] list 3 System.out.println("Hello world!"); 4 System.out.println("Hello world! line 2"); 5 System.out.println("Hello world! line 3");
可以用set listsize <数字>调整显示行数,比如set listsize 10会显示当前行前后共10行代码。
开启自动显示(部分JDK版本支持)
在JDB会话中执行以下命令,开启后每次暂停(断点触发、单步完成)会自动输出对应代码行:
main[1] set autolist on
版本相关说明
你使用的JDK 18不存在功能缺失问题,教程里的效果就是靠调试符号+list/autolist实现的,和版本无关。
内容的提问来源于stack exchange,提问作者mpettis
相关产品推荐
相关产品推荐

