说说IDEA中的debug,不再只会使用普通行断点,效率Max~
按钮
横排每个按钮的作用
- Show Execution Point:回到当前断点所在的页面(ALT + F10)
- Step Over:执行一行代码,遇到方法不进入(F8)
- Step Into:执行一行代码,遇到自定义方法会进入(F7)
- Force Step Into:执行一行代码,遇到所有的方法都会进入(ALT + SHIFT + F7)
- Step Out:执行完当前方法,回到调用该方法的下一行(SHIFT + F8)
- Drop Frame:摧毁栈帧,回到调用该方法处
- Run To Cursor:回到光标处,不执行光标所在行(ALT + F9)
Evaluate Expression:计算器,可用于计算当前方法中某个方法的结果
竖排每个按钮的作用
Rerun:重新debug程序(CTRL + F5)
- Resume Program:执行程序,下一个断点执行前停住(F9)
- Pause Program:暂停此次debug()
- Stop:终止当前程序(CTRL + F2)
- View BreakPoints:查看所有的断点(CTRL + SHIFT + F8)
- Mute BreakPoints:让所有断点失效()
- Get Thread Dump:查看线程dump文件()
断点的种类
普通断点
普通程序语句上,没什么好说的
方法断点
- 方法执行前和结束后各触发一次断点
- 方法为接口方法是,则可以直接跳转到对应的实现类触发断点
异常断点
- 声明指定类型的异常,当程序遇到该异常以后自触发断点
- 即使对异常进行了捕获,断点仍会触发
监控断点
- 断点打在某一属性上
- 每当这个属性发生改变的时候,触发断点
线程断点
- 右键设置断点的Suspend为Thread
- 可强制切换线程来控制线程的执行顺序及查看参数
特殊场景
循环
- 在循环中的断点可通过表达式,在符合变量条件时触发断点
跳过某一步骤
- 当一个方法中有多个操作而我们不想执行某一行时可以使用force return强行退出该方法
- 区分:Step Out和Drop Frame要想执行下一步方法就必须执行前一个方法的全部内容,不能强制退出
流式编程
- 使用Trace Current Stream Chain查看流程的每个步骤、每个数据都怎么变化