恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
第24章-Python调试器 — Python101 1 文档
首页
资讯中心
/
第24章-Python调试器 — Python101 1 文档
第24章-Python调试器 — Python101 1 文档
发布时间:2026/9/3 5:19:37
第24章-调试器自带一个名为pdb的模块, 此模块能为您的程序供给一个交互式的源代码调试器, 您能够设置断点, 可以单步执行代码, 还能检查堆栈帧等, 我们会探讨该模块的以下一些方面:让我们先创建一段快速代码来尝试调试。下面是一个愚蠢的例子# debug_test.py def doubler(a): result a*2 print(result) return result def main(): for i in range(1,10): doubler(i) if __name__ __main__: main()现在让我们学习如何针对这段代码运行调试器。如何启动调试器具备三种各异的方式来启动调试器, 第一种方式是开展导入操作, 并且于代码里插入 pdb.()来启动调试器, 您能够于 IDLE 状态的时候进行调试器的导入, 进而让其运行您的模块, 又或者能够在命令行之上调用调试器, 我们会着重讲述本节最后的两种方式, 我们会起始于在解释器之中运用它IDLE, 开启终端命令行窗口, 朝着保存上述代码示例的地方进行导航, 接着启动, 此刻执行如下操作: import debug_test import pdb pdb.run(debug_test.main()) (1)() (Pdb) continue 2 4 6 8 10 12 14 16 18 我们在这儿导入模块以及PDB, 接着执行PDB的run方法, 还要告知其调用模块的main方法, 这就会展现调试器的提示, 在此我们打字持续, 去告诉它继续运行脚本, 你也能够打字c当作继续的快捷方式当你持续调试时, 程序会持续执行, 直至抵达断点或者脚本结束。启动调试器的另一种方法是通过终端会话执行以下命令python -m pdb debug_test.py如果您这样运行您将看到一个稍有不同的结果- def doubler(a): (Pdb) c 2 4 6 8 10 12 14 16 18 The program finished and will be restarted注意到在此示例里, 运用的是c而非持续, 还会注意到, 末尾调试器会重启, 这会保留调试器状态像断点, 且比作停止调试器更具用处, 有时, 得对代码多次检查, 以此了解出了啥问题。让我们再深入一点学习如何逐步完成代码。单步执行代码要是您期望一回一行地去浏览代码, 那么能够运用 step 或者简便的“s”命令。这儿是您的观赏乐趣:C:\Users\mikecd c:\py101 c:\py101python -m pdb debug_test.py c:\py101\debug_test.py(4)module() - def doubler(a): (Pdb) step c:\py101\debug_test.py(11)module() - def main(): (Pdb) s c:\py101\debug_test.py(16)module() - if __name__ __main__: (Pdb) s c:\py101\debug_test.py(17)module() - main() (Pdb) s --Call-- c:\py101\debug_test.py(11)main() - def main(): (Pdb) next c:\py101\debug_test.py(13)main() - for i in range(1,10): (Pdb) s c:\py101\debug_test.py(14)main() - doubler(i) (Pdb)此时, 于此处, 我们开启调试器从而告知其单步去执行代码。它自顶部起步, 历经前两个函数定义过程。而后其抵达条件之处且发觉应当去执行main功能。我们进入主函数范畴, 跟着运用next命令。此个next倘若命令碰上一个正被调用之函数且未曾对其单步行使, 则它会去实施该函数。若您期望单步执行被调用之函数的话, 那么仅仅是要运用step命令即可如果你见到一行类似 c:.py(13)main() 的样子, 那你就得留意括号里的数字。这个编号乃是代码里当下的行号。使用 args 或者 a, 能把当前参数列表打印至屏幕。另一便利命令是 jump 或者 j, 随后接空格以及要“跳转”至的行号。靠此可跳过一连串单调步骤, 抵达所想抵达的行。由此让我们知晓了断点设置断点位于代码里头, 会致使暂停去执行的那一行存在断点。借助下达 打破 这一命令, 或者是b命令, 紧接着跟上空格以及打算中断的行号, 便可达成。要是想在别的文件里明确断点, 还能够于该文件的行号之前添加上文件名且以冒号衔接。break命令另外还准许运用 功能 参数。存在一个t制动命令, 这个命令会去设置一个临时断点, 一旦该断点被触发, 那么就会自动被删除。下面是一个例子c:\py101python -m pdb debug_test.py c:\py101\debug_test.py(4)module() - def doubler(a): (Pdb) break 6 Breakpoint 1 at c:\py101\debug_test.py:6 (Pdb) c c:\py101\debug_test.py(6)doubler() - result a*2开启使得调试得以进行的工具, 接着告知其于第六行之处设定一个断点。而后持续推进, 它于六号线路停下, 恰似其理应停止那般。此刻是对参数列表予以查验的适宜时段, 用以查看其是否为你所预期的。尝试键入字词args眼下。接着再开展一项持续行进的操作还进行一次args查看其会怎样发生改变的。总结别的大量命令于调试器里是能够运用的, 我提议去阅读文档以便知晓别的文档, 然而, 此刻您理应能够借助调试器切实地调试自身的代码。