Debug 作用的理解:
若整个代码编写没有错误,且执行体没有设置断点时,Debug同正常运行模式,直接得到最终结果 ;
当某一行代码设置断点后,在Debug模式下,代码会运行断点之前的所有程序,在断点处暂停,并在“变量窗口”可以查看所有主程序当前状态(迭代轮次)下运行得到的变量值。
作用:当运行代码时程序报错(或者是提示某个变量时null空值时),但是不知道具体在哪一段出错(哪个变量没有计算出结果)的,可以按照代码执行的先后顺序每隔一段设置一个断点,在Debug模式下发现错误的代码段并通过缩小断点的间距来最终锁定报错代码行(或空值变量)。
Debug模式的启动
1.1 通过鼠标右击代码处,可以来debug程序
1.2 通过点击工具栏的图标(小瓢虫图形)来进行debug
启动后:
(1)开始运行代码,并在断点处暂停
(2)断点所在代码行变蓝,说明Pycharm程序进程已经正常运行到断点处,但尚未执行断点所标记的代码。
(3)Debug tool window窗口出现,显示当前重要调试信息,并允许用户对调试进程进行更改。
Debug窗口常用图标释义
框选的七个图标的含义分别是:
① show execution point (F10) 显示当前所有断点;
②step over(F8) 步过;
注意:此时不会进入子函数内执行单步调试,而是把子函数当作一个整体,一步执行得到结果
③step into(F7) 步入;
若待执行语句存在子函数时,会进入子函数内执行单步调试。
举例示意:
如图所示,点击“step_into”后,下一次for循环会进入到调用的函数find_the_number()中;若此时已运行到i=3的这一迭代轮次,将n=13,k=3代入调用的函数find_the_number()中,点击“step_into”的按钮,可以看到调用的函数find_the_number()每一步的变量值的变化。
④step into my code(Alt + Shift +F7)
若调用的子函数是从其他脚本定义的,即调用外部的包或者模块时,不会进入到子函数的内部,step_into_my_code只进入到当前脚本的函数,而step_into(③)可进入到所有调用的函数
⑤force step into(Alt + Shift +F7) 执行下一行忽略lib和构造对象等(一般用不到)
⑥step out(Shift+F8)当目前执行在子函数中时,选择该调试操作可以直接跳出子函数,而不用继续执行子函数中的剩余代码;并把该内部函数得到的结果返回给外部函数参数。
⑦run to cursor(Alt +F9) 直接跳到下一个光标选定的代码处