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

                                                                                                                              相关文章
                                                                                                                              |
                                                                                                                              1月前
                                                                                                                              |
                                                                                                                              Unix Linux 程序员
                                                                                                                              [oeasy]python053_学编程为什么从hello_world_开始
                                                                                                                              视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
                                                                                                                              116 80
                                                                                                                              |
                                                                                                                              1月前
                                                                                                                              |
                                                                                                                              人工智能 C语言 Python
                                                                                                                              [oeasy]python051_什么样的变量名能用_标识符_identifier
                                                                                                                              本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
                                                                                                                              116 69
                                                                                                                              |
                                                                                                                              7天前
                                                                                                                              |
                                                                                                                              人工智能 Unix Java
                                                                                                                              [oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
                                                                                                                              本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
                                                                                                                              36 9
                                                                                                                              |
                                                                                                                              12天前
                                                                                                                              |
                                                                                                                              C语言 Python
                                                                                                                              [oeasy]python058_一句话让python崩了
                                                                                                                              本文介绍了如何通过重新赋值`__builtins__`使Python环境崩溃,并探讨了下划线的来历及其在编程中的作用。文章回顾了上次内容,展示了覆盖内建模块导致系统崩溃的过程,解释了恢复方法,以及PEP 8规范中关于空格使用的建议。最后,文章总结了下划线在变量定义和提高代码可读性方面的重要性,并简述了其从打字机时代到计算机时代的演变。
                                                                                                                              23 10
                                                                                                                              |
                                                                                                                              22天前
                                                                                                                              |
                                                                                                                              Python
                                                                                                                              [oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
                                                                                                                              本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
                                                                                                                              40 14
                                                                                                                              |
                                                                                                                              14天前
                                                                                                                              |
                                                                                                                              Python
                                                                                                                              [oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
                                                                                                                              本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
                                                                                                                              26 3
                                                                                                                              |
                                                                                                                              17天前
                                                                                                                              |
                                                                                                                              存储 Python
                                                                                                                              [oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
                                                                                                                              在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
                                                                                                                              22 1
                                                                                                                              |
                                                                                                                              1月前
                                                                                                                              |
                                                                                                                              C语言 Python
                                                                                                                              [oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
                                                                                                                              本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
                                                                                                                              35 9
                                                                                                                              |
                                                                                                                              3天前
                                                                                                                              |
                                                                                                                              存储 人工智能 Python
                                                                                                                              [oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
                                                                                                                              本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
                                                                                                                              7 0
                                                                                                                              |
                                                                                                                              1月前
                                                                                                                              |
                                                                                                                              Unix 编译器 C语言
                                                                                                                              [oeasy]python052_[系统开发语言为什么默认是c语言
                                                                                                                              本文介绍了C语言为何成为系统开发的首选语言,从其诞生背景、发展历史及特点进行阐述。C语言源于贝尔实验室,与Unix操作系统相互促进,因其简洁、高效、跨平台等特性,逐渐成为主流。文章还提及了C语言的学习资料及其对编程文化的影响。
                                                                                                                              28 5