[oeasy]python0009 - 设置断点_break_point

简介: [oeasy]python0009 - 设置断点_break_point

 

调试程序 🥊

回忆上次内容

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

      image.gif编辑

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

              尝试调试

                • 想要调试程序找bug
                • 首先得有一个程序

                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编辑

                                                                                                                              相关文章
                                                                                                                              |
                                                                                                                              26天前
                                                                                                                              |
                                                                                                                              Unix 编译器 Shell
                                                                                                                              [oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
                                                                                                                              本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
                                                                                                                              40 9
                                                                                                                              [oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
                                                                                                                              |
                                                                                                                              7天前
                                                                                                                              |
                                                                                                                              API Python
                                                                                                                              使用Python requests库下载文件并设置超时重试机制
                                                                                                                              使用Python的 `requests`库下载文件时,设置超时参数和实现超时重试机制是确保下载稳定性的有效方法。通过这种方式,可以在面对网络波动或服务器响应延迟的情况下,提高下载任务的成功率。
                                                                                                                              28 1
                                                                                                                              |
                                                                                                                              12天前
                                                                                                                              |
                                                                                                                              Python
                                                                                                                              [oeasy]python035_根据序号得到字符_chr函数_字符_character_
                                                                                                                              本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
                                                                                                                              17 4
                                                                                                                              |
                                                                                                                              2月前
                                                                                                                              |
                                                                                                                              移动开发 Java 编译器
                                                                                                                              什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
                                                                                                                              什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
                                                                                                                              31 1
                                                                                                                              |
                                                                                                                              2月前
                                                                                                                              |
                                                                                                                              算法 Unix 程序员
                                                                                                                              [oeasy]python031_[趣味拓展]unix起源_Ken_Tompson_Ritchie_multics
                                                                                                                              回顾了上次内容关于调试的基本概念后,本文介绍了Unix操作系统的起源。从早期计算机任务的独占执行方式讲起,到1960年代 Dartmouth 开发出分时算法,使得一台主机能够面对多个终端,轮流使用CPU时间片。随后,贝尔实验室、通用电气和MIT合作开展Multics项目,项目成员Kenneth Thompson与Dennis Ritchie在此期间开发了一款名为《Space Travel》的游戏。然而,因金融动荡等原因,Multics项目最终被裁撤。Thompson和Ritchie后来利用实验室闲置的一台PDP-7计算机仅用三周时间就开发出了Unix操作系统的第一版,初衷是为了能够继续玩游戏。
                                                                                                                              37 3
                                                                                                                              |
                                                                                                                              17天前
                                                                                                                              |
                                                                                                                              Unix 编译器 C语言
                                                                                                                              [oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ordinal_
                                                                                                                              [oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ord
                                                                                                                              14 0
                                                                                                                              |
                                                                                                                              2月前
                                                                                                                              |
                                                                                                                              程序员 开发工具 Python
                                                                                                                              [oeasy]python0030_动态控制断点_breakpoints_debug_调试
                                                                                                                              [oeasy]python0030_动态控制断点_breakpoints_debug_调试
                                                                                                                              24 2
                                                                                                                              |
                                                                                                                              2月前
                                                                                                                              |
                                                                                                                              Python Windows 内存技术
                                                                                                                              【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
                                                                                                                              【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
                                                                                                                              |
                                                                                                                              2月前
                                                                                                                              |
                                                                                                                              NoSQL 网络安全 Redis
                                                                                                                              用python安装redis并设置服务自启
                                                                                                                              用python安装redis并设置服务自启
                                                                                                                              18 0
                                                                                                                              |
                                                                                                                              2月前
                                                                                                                              |
                                                                                                                              Linux UED iOS开发
                                                                                                                              Python colorama 设置控制台、命令行输出彩色文字
                                                                                                                              Python colorama 设置控制台、命令行输出彩色文字
                                                                                                                              32 0
                                                                                                                              下一篇
                                                                                                                              无影云桌面