python调试工具 — pdb

参考资料

  1. 官方文档
  2. 10分钟教程掌握Python调试器pdb
  3. Python 必备 debug 神器:pdb
  4. PDB——Python调试利器详解

简介

pdb是python的内置模块,类似c++中的gdb的存在,可用于在命令行中对代码进行调试。

进入调试

  1. 修改代码

The typical usage to break into the debugger from a running program is to insert at the location you want to break into the debugger.

在需要调试的位置插入以下代码,运行的时候,会在插入位置停止进入调试模式。

import pdb
pdb.set_trace()
  1. 脚本执行调试

pdb.py can also be invoked as a script to debug other scripts

# myscript.py为要调试的程序
python3 -m pdb myscript.py

推荐使用方法2,重要的是不会添加额外的代码污染代码,更加灵活。

常用命令

命令 功能
断点有关的命令
b(break) 查看已设的所有断点
b no 设置断点,no是断点所在的行号
b filename:no 将断点添加到某个文件中
b funcname 为函数funcname的第一行设置断点
tbreak(break) 同b,临时断点,执行一次自动清除
tbreak no
tbeak filename:no
tbreak funcname
disable bno 禁用指定序号断点,但未删除
enable bno 启用指定序号断点
cl 清除所有断点(包括临时断点)
cl bno1[bno2 ……] 清除指定序号的断点,多个用空格分隔
cl filename:no 清除某文件所在行号的断点
调试相关的命令
s(step) 执行下一句,遇到函数会进入到函数内部执行
n(next) 执行下一句,不会进入函数
r(return) 执行当前所在函数的返回处
c(continue) 执行到下一个断点处
unt(until) 退出当前循环或堆栈,遇到断点会停止
unt no 执行到指定行号处停止
查看代码或变量值
l(list) 列出当前执行行周围的11行代码
l no 列出指定行号周围的11行代码
l no1 no2 列出no1 no2间的行号
ll 列出所有代码
p exp 打印某变量或表达式的值
pp exp 好看一点打印某变量或表达式的值
a 查看所在函数的参数与参数值
what is var 查看变量的类型
其它
restart 重新运行
run 类似restart
q(quit) 退出调试
interact 启动一个python的交互式解释器,使用当前代码的全局命名空间 ctrl + d退出

转载请注明:Onwaier‘s Blog » python调试工具 — pdb