《IDEA破解、配置、使用技巧与实战教程》系列文章目录
第一章 IDEA破解与HelloWorld的实战编写
第二章 IDEA的详细设置
第三章 IDEA的工程与模块管理
第四章 IDEA的常见代码模板的使用
第五章 IDEA中常用的快捷键
第六章 IDEA的断点调试(Debug)
第七章 IDEA创建Java工程、Maven安装与建立工程、Web工程、Tomcat配置
第八章 IDEA关联数据库
第九章 IDEA常用插件_随时更新
文章目录
一、为什么需要Debug
编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢?简单的代码直接就可以看出来,但如果代码比较复杂,就需要借助程序调试来查找错误了。
运行编写好的程序时,可能出现的几种情况:
情况1:没有任何bug,程序执行正确!
如果出现如下的三种情况,都又必要使用debug
情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。
情况3:运行以后,得到了结果,但是结果不是我们想要的。
情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。
比如:多线程情况下,处理线程安全问题。
二、Debug的步骤
Debug(调试)程序步骤如下:
- 添加断点
- 启动调试
- 单步执行
- 观察变量和执行流程,找到并解决问题
1、添加断点
在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。
2、启动调试
IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫”)等等。
3、单步调试工具介绍
1、调试器
在此界面可查看关于调式获得到的信息,如变量、方法返回值等
2、控制台
点击控制台后可以跟我们正常运行代码一样,在控制台中输入数据和查看输出情况
3、重启
重新调试
4、停止
停止当前调试
5、Resume Program
快捷键为 F8,跳到一下个断点处
6、Step Over
快捷键为 F6。步过,一行一行地往下走,如果这一行上有方法,直接执行完该方法的内容,不会进入方法里面。
7、Step Into
快捷键为 F5。步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。
8、Step Out
快捷键为 F7。步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
9、Force Step Into
快捷键为 Alt + Shift + F7。强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
10、Run to Cursor
Ctrl+R。运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
11、Show Execution Point
快捷键为 Alt + F10 。如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前Debug代码执行的行。
12、Variable窗口
如下图中的红框,这里显示当前方法里的所有变量。
13、View Breakpoints(Ctrl + Shift + F8):查看所有断点
14、Mute Breakpoints:使得当前代码后面所有的断点失效, 一下执行到底
说明:在Debug过程中,可以动态的下断点。
三、多种Debug情况介绍
1、 行断点
断点打在代码所在的行上。执行到此行时,会停下来。
2、方法断点
断点设置在方法的签名上,默认当进入时,断点可以被唤醒。也可以设置在方法退出时,断点也被唤醒。如下图所示。
在多态的场景下,在父类或接口的方法上打断点,会自动调入到子类或实现类的方法
3、字段断点
在类的属性声明上打断点,默认对属性的修改操作进行监控。
.4、条件断点
如下图所示,在满足arr[i] % 3 == 0的条件下,执行断点。
5、异常断点
通过下图的方式,对指定的异常进行监控:
6、线程调试
7、强制结束
如上图所示,比如我们进入到一个方法,是用来插入数据到数据库中,一共四行代码,但是到了第二行就已经错误了,我们不想让他继续错下去了,但是还想让这个方法之后的代码稍后继续运行,那我们就让目前的方法强制结束(返回)。
四、自定义调试数据视图
五、常见问题
问题:使用Step Into时,会出现无法进入源码的情况。如何解决?
方案1:使用 force step into 即可
方案2:点击Setting -> Build,Execution,Deployment -> Debugger -> Stepping把Do not step into the classess中的java.* 、javax.* 取消勾选即可。如下图所示。
版权归原作者 醒了就刷牙 所有, 如有侵权,请联系我们删除。