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

                                                                                                                          相关文章
                                                                                                                          |
                                                                                                                          8天前
                                                                                                                          |
                                                                                                                          机器学习/深度学习 数据挖掘 Python
                                                                                                                          Python编程入门——从零开始构建你的第一个程序
                                                                                                                          【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
                                                                                                                          |
                                                                                                                          8天前
                                                                                                                          |
                                                                                                                          存储 Python
                                                                                                                          Python编程入门:打造你的第一个程序
                                                                                                                          【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
                                                                                                                          |
                                                                                                                          10天前
                                                                                                                          |
                                                                                                                          存储 JSON 监控
                                                                                                                          告别Print,使用IceCream进行高效的Python调试
                                                                                                                          本文将介绍**IceCream**库,这个专门用于调试的工具显著提升了调试效率,使整个过程更加系统化和规范化。
                                                                                                                          33 2
                                                                                                                          告别Print,使用IceCream进行高效的Python调试
                                                                                                                          |
                                                                                                                          10天前
                                                                                                                          |
                                                                                                                          机器学习/深度学习 数据挖掘 开发者
                                                                                                                          Python编程入门:理解基础语法与编写第一个程序
                                                                                                                          【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
                                                                                                                          |
                                                                                                                          11天前
                                                                                                                          |
                                                                                                                          人工智能 Shell 开发工具
                                                                                                                          [oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
                                                                                                                          本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
                                                                                                                          12 1
                                                                                                                          |
                                                                                                                          20天前
                                                                                                                          |
                                                                                                                          机器学习/深度学习 算法 编译器
                                                                                                                          Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
                                                                                                                          【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
                                                                                                                          52 3
                                                                                                                          |
                                                                                                                          22天前
                                                                                                                          |
                                                                                                                          算法 测试技术 开发者
                                                                                                                          在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
                                                                                                                          在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
                                                                                                                          25 3
                                                                                                                          |
                                                                                                                          15天前
                                                                                                                          |
                                                                                                                          人工智能 开发工具 Python
                                                                                                                          [oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
                                                                                                                          本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
                                                                                                                          12 0
                                                                                                                          |
                                                                                                                          15天前
                                                                                                                          |
                                                                                                                          存储 机器学习/深度学习 搜索推荐
                                                                                                                          Python编程入门:从零开始构建你的第一个程序
                                                                                                                          【10月更文挑战第32天】本文旨在通过浅显易懂的方式引导编程新手进入Python的世界。我们将一起探索Python的基础语法,并通过实例学习如何构建一个简单的程序。文章将不直接展示代码,而是鼓励读者在阅读过程中自行尝试编写,以加深理解和记忆。无论你是编程初学者还是希望巩固基础知识的开发者,这篇文章都将是你的良师益友。让我们开始吧!
                                                                                                                          |
                                                                                                                          5月前
                                                                                                                          |
                                                                                                                          Python Windows
                                                                                                                          Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
                                                                                                                          Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
                                                                                                                          下一篇
                                                                                                                          无影云桌面