前言
在我们写完代码之后,常常会做一件事:代码调试,来检测
代码的正确性,在进行代码调试之前,一定要确保代码的拼写(例如在前端和后端,多处使用到一个属性,编写时一般建议复制),进一步保证出现最少的运行时异常(RunTimeException),从而保证代码正常运行。本文介绍两种方法进行代码调试:
(一)使用代码输出的方式来调试
(二)借助开发工具debug功能进行调试
(一)使用代码输出的方式来调试
增加一些代码,对取数据的变量和对象进行输出,看是否取到数据,但这些代码没有实际意义,测试完后,可自行删除:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//查询返回一个People集合
List<People> peopleList = peopleService.getAll();
//此处我们取到一个people类集合,我们可以采取遍历的方式来看是否取到数据
for(People p:peopleList){
System.out.println(p);
}
//将集合存进请求
req.setAttribute("PeopleList",peopleList);
//请求转发
req.getRequestDispatcher("index.jsp").forward(req,resp);
}
测试完后,可自行删除…
(二)借助开发工具debug功能进行调试
1.Eclipse的debug
Debug模式是在eclipse的使用中非常常见的对程序进行debug的方式,通过debug模式我们可以更加方便快捷的定位问题出现的位置,并且找到原因进行修改。
如何打断点(breakpoint)
在Java代码的行号处使用鼠标双击出一个断点,这样当我们的程序使用debug模式运行到断点处时,程序会暂停在这里,等待下一步运行的指令。如图:
debug模式的启动
debug模式的启动方式:
1.在工具栏有一个虫子的图形,点击进入debug;如图:
2.在代码区域,点击鼠标右键:选择Debug as----->Java application,进入debug视图。如图:
我们可以看到在debug视图下eclipse为我们展示了当前程序内各个变量的值,那其实我们在保持原有视图的情况下,我们把鼠标放在对应的变量上也是可以看到变量值的,如下图:
Debug运行控制按钮
当程序停在了断点处时,我们要使用按钮对程序进行控制:运行下一步或运行到底等等操作。
F8: 运行到当前方法的下一个断点,或者当前方法调用的子孙方法的下一个断点或如果没有下一个断点则程序直接运行完毕
Ctrl+F2: 结束当前主程序或者停止server
F5: 进入当前断点所在子方法(不常用)
F6 :进入当前断点所在方法的下一步(常用)
F7 :配合F5使用,当进入子方法后返回父方法(不常用)
2.IDEA的Debug
IDea如何打断点
1.在左边行号栏单击鼠标左键即可,就会出现红色圆点,再次点击红点消失。点击右上角的虫子图标进入debug模式。如图:
2.访问请求到达第一个断点后,会自动激活Debug窗口
3.调试按钮:
Step Over (F8):步过,一行一行地往下走,如果这一行上有方法不会进入方法。
Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法
Force Step Into (Alt + Shift + F7):强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
如果想知道某一个表达式的值:选中该表达式,右键选择Evaluate Expression :如图:
断点条件设置:
通过设置断点条件,在满足条件时,才停在断点处,否则直接运行;
通常,当我们在遍历一个比较大的集合或数组时,在断点处设置条件,可以跳过前面不必要的步骤,直接进入设置的条件