相关概念
-
bug & debug
bug:英文意思为虫子,在计算中指代程序中的缺陷或者问题
debug:就是去发现bug并进行解决的过程,通常我们称为调试
调试的作用:让程序员能看清程序每一步的效果 ,在需要查看结果的时候,使用debug查看际结果是否与预期结果一致 -
bug的由来
在很久以前,计算机还非常庞大,某天一台巨大的计算机突然宕机了,工作人员在排查问题时发现在计算机内部,有一只飞蛾因为接触了某个触电被电死了,所以在报告中,bug的创始人赫柏用胶条贴上飞蛾,并把“bug”来表示“一个在电脑程序里的错误”。与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”(中文称作“调试”)
调试步骤
第一步:设置断点
可以设置多个,让程序执行到此处时停留,在eclipse中双击代码编辑器中的某行最左边位置即表示在当前行设置断点,再次双击即为取消断点。
第二步:debug程序
使用debug方式运行程序,在eclipse中右键选择Debug As -> Java Application
(快捷键F11),或者选择工具栏中的小虫子图标,或者选择Run菜单中的debug项都可以。
第一次运行会弹出是否进入debug视图,选择Yes,可以勾选记住我的选择,下次就不会弹出提示了。
debug视图:在左边会显示当前程序执行情况和位置,右边显示当前作用域可见的变量名和变量值,以及程序的所有断点。
点击右上角的java和debug可以对当前视图进行切换。
第三步:进行单步调试(或者多断点调试)
调试主要使用debug视图中的4个红色线标记的按钮或者对应的快捷键,它们分别是:
- a. 继续到下一个断点(resume) 快捷键F8 - 对于for循环而言会回到下一次循环
- b. 结束断点运行(terminate) 快捷键CTRL + F2 - 终止程序运行而不是继续往下执行完毕
- c. step into 快捷键F5 - 当执行到方法时会进入到方法内部
- d. step over 快捷键F6 - 进行单步调试(一步一步向下逐行执行)
- e. step return 快捷键F7 - 由方法内部返回调用处
调试示例
- 如下第9行和第11行为断点位置,debug运行程序,当按下CTRL + F2时,程序直接结束,不输出任何内容。
- 当按下F8时,直接从第9行执行到11行位置(11行还未执行),此时打印内容1 2 one,再次按F8,程序执行完毕
- 当第一次按下的是F5,那么会进入到方法test中,也就是15行,当再次按F5时,会继续进入到println方法的内部,所以根据是否需要进入方法内部决定按F5还是F6。进入15行后按F7会返回到第9行
- 当第一次按下的是F6,执行test方法,打印1 2,继续F6,打印one,再继续打印two,此时按F8结束程序。