[oeasy]python0007-调试程序_debug

简介: [oeasy]python0007-调试程序_debug

 

调试程序 🥊

回忆上次内容

    • py 的程序是按照顺序执行的
      • 是一行行挨排解释执行的
      • 程序并不是数量越多越好
      • kpi也在不断演化

      image.gif编辑

        • 写的代码越多
          • 出现的bug就越多
          • 什么是bug
          • 如何找bug呢?

          尝试调试

            • 那 python 程序到底是怎么一步步解释执行的呢?🤔

            print("1982------Guido in cwi")

            print("1995------Guido in cnri")

            print("2000------Guido in beopen")

            print("2005------Guido in google")

            print("2012------Guido in dropbox")

            print("2020------Guido in microsoft")

              image.gif编辑

              尝试调试

                • 粘贴到vim中

                image.gif编辑

                  • 原来是一把执行
                  • 现在可以一步一步调试运行

                  pdb3 guido.py

                    • 使用pdb来进行调试
                      • pdb的意思是python'sdebugger🤖
                        • 为什么要逐步运行呢?

                        逐步运行

                          • 由于程序不知道哪里出的问题
                            • 所以一步步来执行

                            image.gif编辑

                              • 一步步调试运行的目的是去除bug
                                • 也就是debug
                                  • 可是为什么把程序错误叫做bug 🪰 呢?

                                  help

                                    • 不知道怎么办的时候
                                      • 就要求助(help)

                                      image.gif编辑

                                        • 他给了我很多的命令
                                        • 还说可以help 一下具体 topic
                                        • 查看你哪个topic呢?

                                        具体帮助

                                          • 查看帮助的帮助

                                          image.gif编辑

                                            • 没有参数的话
                                              • 显示所有命令
                                                • 有一个参数
                                                  • 显示这个参数的帮助
                                                    • h(elp) 的缩写是 h
                                                      • elp可以省略

                                                      image.gif编辑

                                                        • 这并不难 h h
                                                        • 再看看其他单词

                                                        list

                                                          • l(ist)
                                                            • 可以列出上下文11行的程序
                                                            • 缩写是l

                                                            image.gif编辑

                                                              • 当前行前面有个箭头 ->

                                                              使用命令

                                                              image.gif编辑

                                                                • 确实可以看到上下文
                                                                • ->代表着当前运行到了哪里
                                                                • 怎么往下走呢?

                                                                next

                                                                  • n(ext)
                                                                    • 可以往前走一句
                                                                    • 缩写是n

                                                                    image.gif编辑

                                                                      • 试一下

                                                                      image.gif编辑

                                                                        • 把1982年输出了
                                                                        • 然后当前行来到了1995年
                                                                        • 如何判断1995年在整个程序中的位置呢?

                                                                        执行

                                                                          • l(ist)
                                                                            • 可以列出当前行的上下文

                                                                            image.gif编辑

                                                                              • 在第2行
                                                                                • next就会到第3行
                                                                                  • 当然也可以一路next下去

                                                                                  一路next

                                                                                  image.gif编辑

                                                                                    • 我们一路next

                                                                                    完成调试

                                                                                      • 一路next 下去
                                                                                      • python 解释器
                                                                                      • 就是这么一步步地解释执行的

                                                                                      image.gif编辑

                                                                                        • 确实是顺序执行的
                                                                                        • 一行行挨排儿执行的
                                                                                        • 我们就一步步地把bug找出来
                                                                                        • 就像找凶手一样!

                                                                                        最真实的解谜游戏

                                                                                          • debug是我见过最真实的解谜游戏了
                                                                                          • 比什么剧本杀好玩多了
                                                                                          • 一步步地分析
                                                                                          • 找不到罪魁祸首的时候

                                                                                          image.gif编辑

                                                                                            • 需要冷静地分析
                                                                                            • 找到罪魁祸首的时候
                                                                                            • 那种快乐太真实了!!!!
                                                                                            • 终于来到最后一行
                                                                                            • 如果到这里再next
                                                                                            • 会发生什么呢?

                                                                                            最后一步

                                                                                              • 执行完最后一句之后
                                                                                                • 就会返回(return)到python
                                                                                                • 然后返回(return)到shell

                                                                                                image.gif编辑

                                                                                                  • 如果这个时候已经到了程序的尽头
                                                                                                  • 再next会发生什么呢?

                                                                                                  绕圈

                                                                                                    • 到头了就又重来
                                                                                                      • 就会重新执行这个文件
                                                                                                      • 就圜道了

                                                                                                      image.gif编辑

                                                                                                        • 可是这个和虫子(bug)有什么关系呢?

                                                                                                        第一个错误 bug

                                                                                                        image.gif编辑

                                                                                                          • 历史上第一个程序错误是
                                                                                                            • 这只虫子bug🪰
                                                                                                            • 飞进继电器(relay)计算机(computer)里面来
                                                                                                            • 导致当时的继电器短路
                                                                                                              • 所以后来
                                                                                                                • 管错误叫做bug
                                                                                                                • 管调试程序错误叫做debug

                                                                                                                总结

                                                                                                                  • py 文件的程序是按照顺序
                                                                                                                    • 一行行挨排解释执行的
                                                                                                                    • 我们可以pdb3 hello.py 来对程序调试
                                                                                                                      • 顺序执行
                                                                                                                        • 程序在文本中从上到下是一行行写的
                                                                                                                        • 解释器是从上到下是一行行解释的
                                                                                                                        • 调试也是从头到尾一行行执行的

                                                                                                                        image.gif编辑

                                                                                                                          相关文章
                                                                                                                          |
                                                                                                                          9天前
                                                                                                                          |
                                                                                                                          jenkins 持续交付 Docker
                                                                                                                          docker之自定义制作镜像(python程序)
                                                                                                                          docker之自定义制作镜像(python程序)
                                                                                                                          |
                                                                                                                          7天前
                                                                                                                          |
                                                                                                                          Python
                                                                                                                          Python 编程入门:打造你的第一个程序
                                                                                                                          【9月更文挑战第27天】编程,就像是在数字世界里绘画。想象一下,你手中的键盘是画笔,屏幕是画布,而代码则是你的颜料。这篇文章将带你走进编程的世界,学习如何使用 Python 这门语言来创建你的第一个程序。我们将从基础的语法开始,逐步深入到条件判断和循环结构,最终完成一个简单的猜数字游戏。无论你是否有编程经验,这里的内容都将为你打开一扇新的大门。
                                                                                                                          |
                                                                                                                          8天前
                                                                                                                          |
                                                                                                                          Windows Python
                                                                                                                          python获取windows机子上运行的程序名称
                                                                                                                          python获取windows机子上运行的程序名称
                                                                                                                          |
                                                                                                                          12天前
                                                                                                                          |
                                                                                                                          Python
                                                                                                                          [oeasy]python035_根据序号得到字符_chr函数_字符_character_
                                                                                                                          本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
                                                                                                                          17 4
                                                                                                                          |
                                                                                                                          26天前
                                                                                                                          |
                                                                                                                          Python
                                                                                                                          探索Python编程的奥秘:打造你的第一个程序
                                                                                                                          【9月更文挑战第8天】本文将带你进入Python编程的世界,通过一个有趣的项目——制作一个简单的猜数字游戏,让你快速入门。我们不仅会分享代码编写的步骤,还会讲解每一行代码的含义和作用,确保即使是编程新手也能跟上节奏。文章末尾附有完整代码,方便读者实践和学习。
                                                                                                                          28 12
                                                                                                                          |
                                                                                                                          22天前
                                                                                                                          |
                                                                                                                          JSON 监控 数据挖掘
                                                                                                                          Python I/O管理新篇章:优化你的程序,让数据流动更顺畅
                                                                                                                          【9月更文挑战第13天】在数据驱动时代,Python因其在数据分析、科学计算及Web开发中的广泛应用而备受青睐。本文探讨了Python I/O管理的关键方面,包括理解I/O瓶颈、使用缓冲技术、并发与异步I/O、高效数据序列化及监控调试。通过具体示例,展示了如何优化文件读写和网络通信,提高程序性能。掌握这些技能,可使数据在程序中流动更加顺畅。
                                                                                                                          34 3
                                                                                                                          |
                                                                                                                          22天前
                                                                                                                          |
                                                                                                                          Python
                                                                                                                          惊!Python进程间通信IPC,让你的程序秒变社交达人,信息畅通无阻
                                                                                                                          【9月更文挑战第13天】在编程的世界中,进程间通信(IPC)如同一场精彩的社交舞会,每个进程通过优雅的IPC机制交换信息,协同工作。本文将带你探索Python中的IPC奥秘,了解它是如何让程序实现无缝信息交流的。IPC如同隐形桥梁,连接各进程,使其跨越边界自由沟通。Python提供了多种IPC机制,如管道、队列、共享内存及套接字,适用于不同场景。通过一个简单的队列示例,我们将展示如何使用`multiprocessing.Queue`实现进程间通信,使程序如同社交达人般高效互动。掌握IPC,让你的程序在编程舞台上大放异彩。
                                                                                                                          15 3
                                                                                                                          |
                                                                                                                          23天前
                                                                                                                          |
                                                                                                                          监控 Python Windows
                                                                                                                          python知识点100篇系列-pysnooper用于调试
                                                                                                                          PySnooper是一个便捷的Python调试工具,用于监控代码执行过程及局部变量的变化,替代繁琐的打印语句。作为GitHub上的热门开源项目,它通过装饰器自动记录代码执行细节。安装简便,支持多种平台,可通过pip安装。使用时,只需在目标函数上添加装饰器即可实时查看变量变化或将其记录至日志文件。此外,还支持使用with块对特定代码段进行调试。更多详细信息可参阅其官方使用文档。
                                                                                                                          python知识点100篇系列-pysnooper用于调试
                                                                                                                          |
                                                                                                                          17天前
                                                                                                                          |
                                                                                                                          Unix 编译器 C语言
                                                                                                                          [oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ordinal_
                                                                                                                          [oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ord
                                                                                                                          14 0
                                                                                                                          |
                                                                                                                          4月前
                                                                                                                          |
                                                                                                                          Python Windows
                                                                                                                          Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
                                                                                                                          Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
                                                                                                                          下一篇
                                                                                                                          无影云桌面