eclipse怎么debug:依托断点逐行排查代码运行异常

eclipse怎么debug:依托断点逐行排查代码运行异常

刚自学Java写项目的那段时间,遇到代码报错就手足无措,一遍遍翻看代码找漏洞,反复添加打印语句输出变量值,折腾一两个小时都找不到问题,直到摸清eclipse怎么debug,才彻底摆脱这种低效的排错方式。

日志打印的方式太被动了,只能看到代码执行完毕后的结果,根本看不到运行途中每一步的变量变化,细微的逻辑错误完全捕捉不到。

当时写一个学生成绩平均分统计的小程序,运行后控制台一直报数组下标越界异常,代码语法没有报错,编译能正常通过,就是运行结果错乱。最开始傻乎乎的在循环、赋值、判断的所有关键位置加了十多条输出语句,运行后控制台刷出一堆杂乱的数据,盯着屏幕逐条核对,越看越乱,折腾四十多分钟依旧毫无头绪。

后来才反应过来,Eclipse的调试功能根本不需要靠打印日志兜底,核心操作就是先设置断点,再启动调试模式逐行排查。当时完全是从零摸索,没有看复杂的教程,只试了最基础的一套实操步骤,却解决了绝大多数代码运行问题。

在代码左侧的行号位置双击,就能生成一个蓝色的小圆点,这就是断点,程序运行到这一行会强制暂停,不会自动执行后续代码。不需要批量打一堆断点,只在疑似出错的代码段开头、结尾各打一个就够,断点太多反而会打乱调试节奏。

设置好断点后,不用点击顶部的运行按钮,右键点击代码编辑页面,选择Debug As里的Java Application,界面会自动切换到调试视图,程序随即启动并卡在断点位置。此时界面右侧会实时展示所有变量的当前数值、状态,所有数据都是代码实时运行的真实结果,比手动打印精准太多。

调试过程里只用记住一个核心按键F6,这是逐行执行代码的快捷键。之前分不清F5和F6的区别,误按F5会跳进系统底层的源码里,密密麻麻的代码让人直接懵掉,完全偏离了排错方向。只用F6逐行运行自己写的业务代码,每按一次就执行一行,同步观察变量变化,就能精准定位出错的那一行。

那次数组报错的问题,就是靠这个方法找到的。逐行调试时清晰看到,循环变量的数值超出了数组的最大下标,才发现自己把循环判断条件写错了,将`i < 数组长度`写成了`i <= 数组长度`,一个符号的误差,靠日志很难精准锁定,调试模式下一眼就能看清问题。

修正符号后,取消断点再次调试,程序全程流畅运行,没有任何异常。删掉页面里所有多余的打印语句,整个代码页面瞬间清爽了不少。

关掉调试视图,切回普通代码编辑界面,保存完修改后的代码,随手关掉了重复打开的几个教程网页。