Python 调试器 pdb 基础使用指南

Felix
Felix
发布时间:2026-10-12 | 2人浏览过
原创

本文介绍 Python 内置调试器 pdb 的两种核心用法:通过命令行启动脚本进行交互式调试,以及在代码中嵌入 pdb.set_trace() 实现断点暂停。详细列举了单步执行、断点管理、变量查看及条件断点等常用命令,帮助开发者快速定位并解决代码逻辑错误。

命令行交互式调试

使用 python -m pdb 模块可以直接启动脚本进入单步执行模式。这种方式适合在运行前预设调试策略,或者在不修改源代码的情况下进行动态调试。

启动与基础操作

启动调试后,输入 h 可获取帮助信息,w 用于打印当前执行堆栈。通过 d 和 u 命令可以分别跳转到当前堆栈的深层或上层,从而在不同调用层级间切换。

断点管理

调试的核心在于断点控制。使用 b 命令可以列出当前所有断点及其命中次数。添加断点的语法灵活:

  • b line_no:在当前脚本指定行号添加断点。
  • b filename:line_no:在指定文件的指定行添加断点。
  • b function:在函数的第一条可执行语句处添加断点。

若需临时断点,可使用 tbreak,其语法与 b 相同,但在第一次命中后会自动删除。清除断点可使用 cl 命令,支持清除所有断点、指定断点号或指定行号/文件行的断点。此外,disable 和 enable 命令可用于停用或激活特定断点,而无需删除它们。

执行控制与代码查看

进入调试环境后,可通过以下命令控制执行流程:

  • s:单步执行,若当前语句为函数调用,则进入函数内部执行第一句。
  • n:执行当前语句,若为函数调用则直接执行完毕,不进入函数内部。
  • r:运行当前函数直到结束,返回到调用者层级。
  • c:继续执行直到遇到下一个断点。
  • unt:执行到下一行代码或跳出当前循环。
  • j lineno:设置下一条执行的语句行号(仅限堆栈最底层)。

使用 l 命令可查看代码上下文:l 显示当前语句周围 11 行代码;l first 显示指定行周围的代码;l first second 则显示指定范围内的代码。

变量查看与表达式求值

调试过程中,a 命令用于列出当前执行函数的参数。使用 p expression 可输出表达式的值,而 pp 命令则以更美观的格式输出复杂对象。直接输入 Enter 键可重复执行上一条命令。

其他功能

输入 run 可重新启动调试会话,q 用于退出调试环境。若输入 pdb 不识别的命令,它将被当作 Python 语句执行,这提供了极大的灵活性。此外,可通过 condition bpnumber condition 为断点设置条件,使其仅在特定条件下触发。

#test1.py

s = '0'
n = int(s)
print(10/n)
python -m pdb test1.py

代码内嵌断点调试

对于频繁调试的场景,命令行方式可能显得繁琐。第二种方法是在代码中直接嵌入调试语句,程序运行至该处时自动暂停并进入 pdb 环境。

实现步骤

  1. 在需要调试的 Python 文件中导入 pdb 模块:import pdb。
  2. 在代码中需要暂停的位置添加 pdb.set_trace()。
  3. 运行脚本,程序将在 set_trace() 处暂停,并进入交互式调试环境。

在暂停状态下,开发者可以使用 p 变量名 查看当前变量状态,确认无误后输入 c 继续运行程序。

# test1.py

import pdb


s = '0'
n = int(s)
pdb.set_trace() #运行到这里会自动暂停
print(10/n)

以上就是 Python 调试器 pdb 的简单使用指南,涵盖了命令行交互与代码内嵌两种主要调试方式。更多关于 Python 调试技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表