Python自动化 全网最实用的 Debug 调试技巧汇总-Python 大佬偷偷使用的神技

kouyou · 2019年08月10日 · 最后由 huangchen1019 回复于 2020年04月12日 · 1229 次阅读

一、思考❓❔

1.什么是debug?

  • 找茬
    • 找软件的茬
  • 发现程序的缺陷


2.为什么需要debug?

  • 谁都不敢保证,写的代码没有任何问题
  • 高效查找软件异常
  • 一位优秀的开发工程师
    • 20%的时间写代码
    • 80%的时间用来排错
  • “不会debug” == “不会代码” == “低工资”


3.debug工具需要具备哪些功能?

  • 控制程序的执行
    • 想停则停,想执行则执行
    • 随心所欲
  • 设置断点
    • 在指定位置停止
  • 查看当前命名空间(程序栈)中变量


二、Python中的Debug大法📐

案例代码如下所示:

创建deubg_skills_demo.py文件

import time

from DebugSkills.gifts import send_gift


def say_love(name, talk):
    print(f"{name}: {talk}!")
    print(show(3))
    print(f"{send_gift()}, 能代表我的心!")


def show(num):
    print(f"{'轰隆' * num}!")
    print(f"{'⚡' * num}")
    return "还敢再发誓吗?"


def long_long_ago(name, talk):
    # breakpoint()
    print("\nlong long ago...")
    print("当初没被雷劈死的原因既然是爱错了那个她/他")
    print(f"{name}: {talk}!")
    print(show(4))
    print(f"{send_gift()}, 能代表我的心!")


if __name__ == '__main__':
    lover = input("请输入你爱的人: ")
    love_talk = input("请输入爱的箴言: ")
    # 方法一:
    # import pdb
    # pdb.set_trace()

    # 方法二:
    # breakpoint()
    breakpoint()
    say_love(lover, love_talk)
    time.sleep(5)
    lover = input("\n请输入你爱的人: ")
    love_talk = input("请输入爱的箴言: ")
    long_long_ago(lover, love_talk)


创建gifts.py文件

import random

gifts = ["99朵玫瑰", "钻戒", "马尔代夫三十日游",
         "北京二环内的一套厕所", "玛莎拉蒂车钥匙",
         "免费自行车司机"]


def send_gift():
    """
    送礼物
    :return:
    """
    one_gift = random.choice(gifts)
    return one_gift


1.pdb操作 (^_-)-☆

  • 系统自带的debug工具(无需安装)

  • 将以下代码放在需要调试的地方(类似于设置断点)

# 通用方法
import pdb; pdb.set_trace()

# Python3.6以上版本
breakpoint()


  • 当程序执行到上述代码所在位置时,会自动开启一个console终端

    • "->"是接下来要执行的代码(当前还未执行


  • 可以在终端运行的命令

    • list或者l
    • 显示当前运行的代码
    • 默认列出11行代码


  • p 变量名 或者 p 需要运行的表达式

    • 打印变量的值


  • step或者s

    • 如果在函数调用处执行,则会进入函数体内部


  • next或者n

    • 如果在函数调用处执行,则不会进入函数体内部


  • enter

    • 重复执行上一次的命令
  • b(reak) [ ([filename:]lineno | function) [, condition] ]

    • 设置断点
    • filename可选,如果不传,默认在当前文件设置断点


  • c或者continue

    • 继续往下运行,在下一个断点处停下来


  • disable 断点编号

    • 禁用断点


  • enable 断点编号

    • 启用断点
  • cl或者clear 断点编号

    • 清除断点


  • display或者undisplay 变量

    • 监听或者不监听某个变量
    • 如果变量值改变,会自动显示


  • h或者help

    • 帮助信息


  • h 具体命令
    • 具体命令的帮助文档


  • h pdb
    • pdb的完整文档


三、Pycharm debug操作🔨🔨


1.打开Python Prompt

会出现一个ipython的控制台

  • 可在控制台查看当前命名空间中的变量
  • 也可执行Python表达式


2.Step Over / F8

  • 按调试工具栏中的

  • 类似于pdb中的next

  • 程序不会进入到函数体内部


3.Step Into / F7

  • 按调试工具栏中的

  • 类似于pdb中的step

  • 程序会进入到函数(方法)体内部、系统源码、第三方模块源码中


4.Step Out / Shift+F8

  • 从函数体内部跳出


5.Step Into My Code / ALT+Shift+F7

  • 按调试工具栏中的

  • 主要关注自己写的代码

  • 从系统源码、第三方模块源码中跳到自己写的代码中


6.Evaluate Expression

  • 在当前命名空间内计算表达式的值


7.Quick Evaluate Expression

  • 快速计算表达式的值


8.Watching

  • 类似于pdb中的display
  • 可以监听某个变量或者表达式的值


四、总结💡💡

  • 作为代码编写者,掌握代码的调试技巧是必备的
  • 能提升工作效率,提高代码质量
  • Python中Debug调试工具和技巧非常多
  • 最常用、最实用的知识点,本文均有覆盖
共收到 106 条回复

keyou大佬棒棒哒!

可优大佬最棒!我的作业完成了!赞也点过了!(此条5毛,括号内删除)

3楼 已删除

优秀哦,乡亲们!!!

村长666,这是自动化评论

没有灵魂的机器人说:可优真帅!

来交作业了~~~~

狮虎猎物获威名,可怜麋鹿有谁怜?

世间从来强食弱,纵使有理也枉然。

可优大佬讲的东西很有价值!点个赞!

挟飞仙以遨游,抱明月而长终。

厉害了

拔草来了

老师授业解惑,醍醐灌顶

听君一席话胜读十年书

可优大佬写得真棒!赞赞赞!!!

可优大佬棒棒的!

可优村长老厉害了!!!!!!!,(作业自动化调试)14720

keyou is a smart man!

keyou is a smart man!!35

可优大佬棒棒的!20190815184844

可优大佬棒棒的!20190815185213

可优大佬bang bang bang!!!

20190815232257:可优大佬,python自动化测试坑好多,如何避免踩坑?

20190815232616:可优大佬,还是想说,教完自动化再2撤呀

20190815233508:可优大佬,你走了,没人督促拔草了,田里长满了草

20190815233914:老铁,记得看望乡亲们呀

20190815234417:可优大佬,喜欢你课上的图片,既励志又不鸡汤

20190815234757:每一发奋努力的背后,必有加倍的赏赐。

20190816001647:可优大佬,不上测开还能问问题?

20190816004919:可优大佬,喜欢你课上的图片,既励志又不鸡汤

文章通俗易懂,内容很有用

可优大佬棒棒哒

写的真好!

可优大佬课讲得很棒,再多多练习英文发音就更完美啦!!86

干货满满

受益匪浅

厉害厉害

可优大佬棒棒的,大赞赞

very good

42楼 已删除

keyou is a smart man!!36

村长,干货满满!+02167赞!

keyou is a smart man!!92

keyou is a smart man!!68

可优老师明明可以靠才华,偏偏要靠颜值

2019-08-18 01:02:45可优老师明明可以靠才华,偏偏要靠颜值

老徐拜读全网最实用的 Debug 调试技巧汇总-Python 大佬偷偷使用的神技

老徐2019-08-18 19:55:35拜读:全网最实用的 Debug 调试技巧汇总-Python 大佬偷偷使用的神技

可优男神,真厉害啊!什么都会

受教啦

可优老师,棒棒哒!都是干货!

2019-08-19 17:16:45可优老师明明可以靠才华,偏偏要靠颜值

可有村长起来除草啦

可有村长起来除草啦,内容还不能重复撒!

可优大佬的声音还有磁性。。。20190820003923like.png

20190820011430:老铁,来深圳呀,哈哈!

大佬666_20190820105236

老师授业解惑,学生醍醐灌顶

可优大佬宇宙第一帅!!

可优大佬棒棒哒!! 浅显易懂,受教啦!!

可优男神~~ 浅显易懂,受教啦!!好好学习学习!!

给可优大佬点赞!!_2019-08-20 19:54:01.834143

可优真棒

可优大佬讲课棒棒哒!

大佬棒棒的!20190822223457

可优大佬棒棒的!20190822224508

可优大佬,可优大佬!

2019-08-24 14:25:06可优老师明明可以靠才华,偏偏要靠颜值

可优大佬厉害了,666

很棒!

干货满满,收益匪浅!2019-08-25 22:32:00

干货满满,收益匪浅!2019-08-25 22:49:38

干货满满,收益匪浅!2019-08-25 23:04:08

生活因你而火热

大王叫我来巡山!!我到这儿转一转!!!

大王叫我来巡山!!!我到这儿转一转!!!

点赞可优大佬!666

2019-08-27 10:25:50赞,通俗易懂

赞,通俗易懂

赞,通俗易懂,已收藏

keyou大佬威武霸气!

2019-08-27 18:13:01可优老师我比你帅多了

受益匪浅

2019-09-09 12:14:28可优老师明明可以靠才华,偏偏要靠颜值

20190920235546:每一发奋努力的背后,必有加倍的赏赐。

20190921122757:可优大佬,你走了,没人督促拔草了,田里长满了草

20190921172006:可优大佬,不上测开还能问问题?

可优老师是集颜值与才华于一身的大佬

可优大佬明明可以靠颜值挣钱,非要靠实力

可优大佬在课间休息时间最爱播放的歌曲是:Adele唱的,我也爱听

可优大佬讲课诙谐幽默,易于理解

就喜欢看可优老师得帖子,都是干货!!

可优老师得帖子很有价值!!都是干货!!

都是干货!!

干货!!真棒。

喜欢可优老师讲课,喜欢看可优老师的帖子。

666文章浅显易懂,手动点赞

满满干货!!

满满干货,好好学习!!!

满满干货,好好学习,天天向上!!!

手动点赞!!

手动给可优老师点赞!

这是自动化执行发布的评论!2020_04_12_15_35_02

这是自动化执行发布的评论!2020_04_12_15_37_33

这是自动化执行发布的评论!2020_04_12_15_39_25

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册