人话讲解Debug工具
Debugging:调试
断点:马上要执行这行代码,但还没执行的时候。
这里说明一个个人多年的理解错误:
调试是控制调试器的暂停位置,不会跳过任何代码的执行,也不会改变程序的原有执行顺序。
程序始终按照代码逻辑顺序执行,只是调试器的“观察窗口”会根据你的操作调整暂停的位置。
只会暂停!不会跳过任何代码执行,也不会改变程序的执行顺序!
快捷键
1.F8:step over,一行行执行
-
逐行执行代码,但不会进入方法内部!
variables是当前变量的情况。
如果先用step into进入了方法内部,那么点击step over还是一行行执行。
2.F7:Step Into:进入方法内部,一行行调试
-
进入当前行调用的方法内部,逐行调试该函数。
如果当前行没有函数或者在方法内部,那么相当于step over。
3.Shift + F8:Step out:跳出方法,并返回到调用方法的位置。
-
执行完当前方法的剩余代码,并返回到调用它的位置。
正常使用:使用过step into 进入方法之后(或者不使用,已经在main方法中了),使用step out能执行当前方法的剩余代码,并返回到调用它的位置。
因为进入的必然是main方法,什么时候都可以用step out。
理解“并返回到调用它的位置”:
举例:如果a();进入了,现在在a方法内部,然后使用step out,那么会执行完a方法剩余的语句,并跳出。跳出在a();语句的下方,但还未执行下一句语句的地方。(相当于在a()语句下方的语句打了断点的效果)。
4.F9:Resume programe继续恢复
只有一个断点时
当调试到一半,想要继续Run程序,那么点击F9,能执行剩余的程序直到结束。
有多个断点时(常用):
点击F9,则会跳到下一个断点的位置,继续调试
其他:
Ctrl+F2:Stop
Ctrl+shift+F8:View Breakpoints
断点视图,打开后
可以取消断点。对勾--->done即可。
Scanner的对象.nextInt()
这里会阻塞,再点击F8step over是没有用的,需要键盘输入。