Debug功能是在使用Eclipse中非常有用的一项功能,通过debug模式,开发者可以更加方便的找出问题出现的位置,这样便于开发者的修改。本篇博客将介绍Eclipse中Debug功能的用法。
Java类的Debug调试
在编写Java逻辑代码时难免会出现错误,代码错误编译器会直接提示修改,有些错误倏然编译时不会报错但是运行时会给出错误信息,对于这种错误开发者也能够轻松的定位到错误的位置并进行修改。
编译错误

运行错误

逻辑错误
逻辑错误在编译和运行时可能都不会有错误提示,但是最终得到的结果和预想的不同,对于这种错误有两种方式解决。
☄ 依靠个人的逻辑思维能力和对Java语言的熟练直接按照逻辑检查代码,并在在合适的地方添加System.out.println()语句输出关键信息
✦ 这种方法仅适合代码较少或者逻辑较为简单的的代码调试,初学者可以多尝试此种方法来锻炼自己的逻辑思维和读代码的能力
☄ 使用编译器中的Debug功能来调试代码
✦ 这种方法适合代码量大,逻辑复杂的代码调试
Debug功能的使用
在eclipse中,我们运行Java程序的方式一般有两种,分别是启动带main方法的类和启动服务器(如tomcat),这两种方式启动debug模式的方法都很简单。
启动带main方法类的debug模式

或者直接点击上方的debug图标,要注意是否是当前需要调试的类(鼠标放在上面会自动显示要调试的类)

启动服务器的debug模式
以tomcat为例,正常启动tomcat和debug启动的方式区别在于选项不同,使用debug模式启动只需要在server上鼠标右键选择debug即可

添加断点
只需要在java代码的行号处双击鼠标就可以添加一个断点,当在debug模式下代码运行到debug断点处时就会暂停执行,等待用户的下一步的指令

✦ 断点的位置不是随意的,也不是越多越好,只有将断点添加在关键的位置才能使debug调试事半功倍
Debug视图
在第一次运行debug模式的时候,程序会出现选择弹框

这个弹框意思是是否选择debug视图,选择Switch就会进入debug视图,选择No就会停留在当前视图,Remeber my decision是记住选择下次不再提示(不建议勾选)

Debug视图

✦ 各小透视图可以拉动到不同位置,根据个人习惯放在喜欢的位置上即可
debug模式下的界面主要分为5各区域,不喜欢的可以叉掉,也可以通过旁边的搜索框(Quick Access)搜索调出
☃ Debug(调试)区域,显示当前正在调试代码是什么,在第多少行

☃ Variables(变量)区域,显示变量的值

☃ 代码编辑区(代码部分)

☃ 代码结构区(outline),显示代码中的各个方法

☃ Console(控制台)区域:打印输出信息
Debug按钮和快捷键
当程序停在了断点处时,我们要使用按钮/快捷键对程序进行控制
◌ step into跳入(f5): 进入当前行所调用的方法中

◌ step over 跳过(f6): 执行完当前行的语句,进入下一行

◌ step return 跳回(f7) : 执行完当前行所在的方法,进入下一行

◌ drop to frame : 回到当前行所在方法的第一行

◌ resume 恢复(f8) : 执行完当前行所在断点的所有代码,进入
下一个断点,如果没有就结束

◌ Terminate 结束断点调试(ctrl+f2) : 执行完当前行所在断点的所有代码,进入
下一个断点,如果没有就结束

➥ 在调试中途发现问题后注意关闭debug调试
➥ debug调试完成后切换回Java EE视图(可在Quick Access中搜索Java EE)

如果在开始时未选择Switch停留在当前视图下也可以debug断点调试,只不过没有这么多小的透视窗功能,鼠标移动到变量上依然可以看到变量值

✦ Java Debug调试时要时刻注意控制台输出和变量值的变化情况,从而找出问题的所在并改正
Java Web的Debug调试
在Javaweb项目中的应用,一般在进行调试的时候,会把断点打在web项目的action或controller对应请求的第一行代码上,这样做的好处是前台请求进入后台后第一时间或被断点拦截,如果断点没有拦截则说明前台请求没有进入到后台,原因无外乎前台没有发出请求或前台的请求发出了但没有进入到方法体(404或403或被拦截),正常会进入到断点处

这时我们可以使用断点运行控制按钮进行控制,一般一步一步在方法体中运行,如果运行到某一行出错,则我们重新运行请求后,在问题行打断点,debug进行到该断点后,我们找到该方法调用的方法,在该被调用的方法内打断点,然后下一步下一步进行到该断点,继续debug即可
本博客与CSDN博客༺ཌ༈君☠纤༈ད༻同步发布