一、什么是调试
首先,我们要明白,在工作中,我们并不是大多数的时间都在敲代码。就像是说把被子叠成豆腐块一样,讲究"三分叠,七分修",对于我们程序员而言,敲代码只是一小部分,更多的时间要用来调试。
1、什么是调试?
当我们发现程序中存在的问题的时候,我们去查找和改正错误的过程称为调试(debugging)
调试的⼀般途径是采用各种方法逐步缩小bug所在的范围,最终定位bug的准确位置。
二、常见的调试方式
1、阅读代码跟踪程序问题
(1)适用于代码量短小
(2)常见的方式是逐行阅读代码和插入⼀些打印语句观察代码的问题
2、使用工具
(1)适用于复杂程序
(2)使用集成开发工具中集成的调试器
三、使用IDEA调试Java程序
1、打断点
把鼠标放在行号左侧这里,点击鼠标左键,出现红色按钮

2、启动调试
鼠标右键,点击Debug...

3、调试界面介绍

3.1逐过程
逐行执行,不进入方法内部
快捷键:Step Over(F8)

3.2逐语句
进入方法内部执行
快捷键:Step Into(F7)



3.3强制步入功能
Force Step Into 是⼀种强制步入功能,它允许调试器进入任何方法,包括那些通常会被StepInto功能跳过的方法。
与普通Step Into(F7)的区别:
(1)普通Step Into(F7)通常会跳过库方法、无源代码的方法等。
(2)ForceStepInto会进入任何方法,包括那些通常被跳过的方法。
快捷键:Alt+Shift+F7

3.4跳出功能
跳出当前方法,它让程序执行完当前方法的剩余部分,然后返回到调用该方法的位置。快速完成当前方法的执行。
快捷键:StepOut(Shift+F8)

假设进入了⼀个方法,此时需要跳出,不执行后续方法。



3.5运行到光标所在位置
快捷键:alt+F9



3.6重新调试
快捷键:ctr+F5

3.7跳到下⼀个断点
从当前断点处,直接跳转到下⼀个断点处



3.8暂停调试
快捷键:ctr+F2

3.9显示所有断点
是⼀个集中管理所有断点的界面,可以查看、编辑、启用/禁用或删除断点
快捷键:通常是Ctrl+Shift+F8


3.10屏蔽断点
临时禁用所有断点的功能,而不需要逐个禁用或删除它们


四、其他
1、Debugger标签下会展示调用堆栈以及变量等表达式的值

此时add:11 main:5属于调用堆栈信息,先调用main方法,后调用add方法
标有"Evaluateexpression(Enter) or addawatch",这⾥可以输入表达式进行求值或添加到监视列表,如:

可以输出表达式,按下回车计算结果
2、Console标签下会展示控制台的输入输出信息
只要遇到输出语句,此时就可以查看输出的结果

3、条件断点
当⼀个代码需要满足某种条件进行调试,此时可以使用调试断点
(1)打断点
(2)鼠标右键,添加条件即可

(3)开始调试程序会停在满足条件的情况下
