前言

  • print很好用,遇到错误就print,实在不行就多几个pirnt
  • 这样就出现了满屏幕的print,麻烦而且不省事,当然,在你明确知道某个位置可能会出错,print还是很有用
  • 但只会用print远远不够,你需要在一片代码中快速定位到bug,本篇博客介绍如何使用pycharm的代码调试功能

pycharm 的 debug

  • pycharm提供了非常强大的debug功能
  • 以下面代码为例:
#!/usr/bin/env python 
# -*- coding:utf-8 -*-
# 调试:
def add(*args):
    sum = 0
    for item in args:
        sum += item
    return sum

if __name__ == '__main__':
    sum = add(1,2,3,4,5,6,7,8,9,10)
    print(sum)

打开调试的几种方式

  1. 鼠标右键选择 Debug
  2. 代码调试入口 if __name__ == '__main__': 处单机选择 Debug
  3. 快捷启动方式,菜单工作区域
  4. ...打开调试的方式有很多,选一种即可

断点

  • 含义: 断点(Breakpoint)即中断操作,只有继续手动执行才继续下一步操作
  • 打断点: 点击需要加断点的代码行,如下:

    左侧红点就表示此处有断点

调试模式

运行Debug(调试)模式,结果如下

  • 变量区域: 可以查看变量的执行流程和变化
  • 蓝色代码行: 蓝色代码行表示debug下一步要执行的操作,变量区域显示的是上一行的变量执行结果
  • pycharm debug subrocess 子进程 pycharm的debug窗口_代码调试


认识功能键

  • 右侧红框功能菜单,鼠标悬停后有提示各菜单的功能
  • 横排红框功能菜单,是主要操作功能菜单
  • pycharm debug subrocess 子进程 pycharm的debug窗口_代码调试_02


横排操作功能区

口诀

7进,8出,9跳

  • 7进: F7(step into),在单步执行时,遇到子函数就进入并且继续单步执行,有的会跳到源代码里面去执行
  • 8出: shift+F8(step out),跳出函数体,返回到调用此函数的地方
  • 9跳: F9(Resume program),跳过当前断点

其他功能键

  • F8(step over): 在单步执行时,程序代码会越过子函数,但子函数会执行,且不进入.(不存在子函数是,与F7作用一样)
  • Alt+Shift+F7(step into my code): 在单步执行时,遇到子函数就进入并且继续单步执行,不会进入到源码中
一般操作流程
  1. 设置断点
  2. 打开Debug模式
  3. F7/F8单步执行
  4. F9结束,跳到下一个断点
总结
  1. 调试模式在代码量增多或者找其他人写的代码bug,很有用
  2. 本篇博客只停留在调试模式的基础,但是掌握了基础,再去解决深层次的问题,只是时间问题


喜时之言,多失信;怒时之言,多失体