Advertisement

python调试工具 -- pdb

阅读量:

参考资料

  1. 官方文档
  2. 深入浅出的Python调试指南
  3. 掌握Python调试技巧:全面解析pdb工具
  4. PDB: Python编程员的必修技能详解

简介

Python自带了pdb模块。它类似于C++中的gdb工具的存在,并且便于开发者在命令行环境中对代码进行调试。

进入调试

  1. 修改代码

A commonly used method for breaking into a debugger while the program is running is inserting at the desired debugging location.

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

复制代码
    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退出

全部评论 (0)

还没有任何评论哟~