Python 调试器 pdb 基础使用指南

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

本文介绍 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。