debug 技巧之本地调试
一、debug 模式启动应用
![](https://static001.geekbang.org/infoq/7f/7f3bb1c3860a1a19f056eaa22d5ce121.png)
这个还是很简单的,我相信只要不是手抖都不会点错。但是有时候我们会发现平时很快就启动好的应用,突然变得特别慢,好几分钟都启动不好。一般出现这种情况的原因有可能是
你将断点打在了方法上
,这个 IDEA 官方也有说明,如下。
![](https://static001.geekbang.org/infoq/b6/b65fa1957eec73fcedf60c0b1e381583.png)
解决办法有两个 a. 找到方法上断点取消掉 b. 如果断点不好找,直接找到 IDEA 的 BreakPoints 全部取消就好了
![](https://static001.geekbang.org/infoq/c9/c9f14a4909fb831f72769d9c27a45991.png)
二、调试功能
![](https://static001.geekbang.org/infoq/c6/c64f22dfbdaa5fb316889afe4c451e2f.png)
Resume Program(继续程序):当程序处于暂停状态时,点击这个按钮会使得程序继续执行,直到下一个断点或者程序结束。
Step over(单步跳过):这个按钮允许你执行当前行的代码,但是不会进入当前行调用的任何方法内部。如果当前行调用了一个方法,那么这个方法的执行会“跳过”,直接执行到这个方法的返回处。
Step into(单步进入):与 Step over 不同,Step into 会进入当前行调用的方法内部。如果当前行是一个方法调用,那么程序会暂停在这个方法的第一条可执行行。
Force Step into(强制单步进入):这个按钮允许你强制进入一个方法,即使该方法的源代码不可用(例如,它可能是一个第三方库的一部分)。通常,当尝试使用 Step into 进入一个没有源代码的方法时,IDEA 会忽略这个步骤。但是,使用 Force Step into 可以强制程序进入方法,即使没有源代码。
Step out(单步返回):当处于一个方法内部时,点击这个按钮会使得程序执行完当前方法的剩余部分,并在方法返回时暂停。这允许你快速退出当前的方法,返回到调用它的代码中。
这些调试功能对于理解程序的执行流程和调试程序中的错误非常有帮助。自己可以多试试。
三、 Evaluate Expression
这个功能是我用的最多的,非常好用,强烈推荐!!!
1. 它在哪?
进入 debug 后,代码区右键打开菜单
![](https://static001.geekbang.org/infoq/a2/a25fa2f6fd5ce1f78f5398181db6821f.png)
2. 它长啥样?
上面是输入框,下面是输出
![](https://static001.geekbang.org/infoq/d6/d60da67f7a2f7a7e15abb53fddf3b2a7.png)
3. 它有什么作用?
查看变量值
修改变量值
执行方法
查看复杂数据结构
调试信息输出
... ...
不仅上面这些,它甚至可以写一段新的代码执行,我演示几个吧,不然没感觉。
(1)查看变量值
![](https://static001.geekbang.org/infoq/cf/cf66e4e5a9a04f533ef0521d903cb868.png)
![](https://static001.geekbang.org/infoq/5f/5fb9733c274340fecb5cd5423a9cb640.png)
(2)执行方法
![](https://static001.geekbang.org/infoq/08/084b5baed250b2f880b2db5649bd229d.png)
![](https://static001.geekbang.org/infoq/d0/d03e20fc1457c14c13630a93a41a680f.png)
(3)新的代码块
![](https://static001.geekbang.org/infoq/7f/7fbe0a75f67478cb99344faaba93d9de.png)
四、小结一下
调试 Java 程序,用 IDEA 社区版挺方便的。设置断点的时候别太随意,否则启动程序会慢得跟蜗牛似的。用好单步调试,能帮你一步步看清楚程序是怎么跑的。还有那个表达式评估,简直就是调试时的万能钥匙,啥都能干。最后,记得多学多练,调试这门手艺,越磨越亮。
文章转载自:不若为止
评论