pdb调试

  • 1 pdb的调用
  • 2 pdb设置断点
  • 3 一个网上的实例来说明pdb的用法
  • 4 pdb中的常用命令
  • 4.1 使用`n`来执行下一行
  • 4.2 使用`ENTER`重复上一个命令
  • 4.3 使用`p`打印变量值
  • 4.4 使用`l`查看上下行代码
  • 4.5 使用`s`进入子函数
  • 4.6 使用`r`执行函数直到结束
  • 4.7 使用`c`停止调试并继续运行
  • 4.8 输入`q`直接退出调试界面
  • 5 写在最后
  • 佐佑思维公众号二维码如下:
  • 一个小工具,欢迎免费下载


Pdb就是Python debugger ,是python自带的调试器

1 pdb的调用

pdb是python标准库,所以调用很简单

import pdb

2 pdb设置断点

就是在你认为可能出错的地方设置一个断点

pdb.set_trace()

3 一个网上的实例来说明pdb的用法

import pdb 

def test (p): 
    p=p+1
    return p 

def fastdebug():
    pdb.set_trace()
    print(' start')
    temp = 'ready '
    print('ok')
    res = test(temp)
    print('end')
    
fastdebug()

test函数接收一个参数p并计算p+1的值传出,这里传入的参数本应该是数值型,但是参数temp是str字符串,所以当我们执行上面一段代码时一定会报错

Python数据错误返还 python出错了怎么返回_debug

可以看到运行代码后,pdb的调试器控制台将从放置set_trace()的位置开始等待我们的命令,并且箭头标记指向pdb接下来要运行的行。那么接下来介绍一些pdb中常用命令

4 pdb中的常用命令

4.1 使用n来执行下一行

在弹出的文本框中输入n即可执行该行,并且箭头将指向下一行即将执行的代码

Python数据错误返还 python出错了怎么返回_python_02

4.2 使用ENTER重复上一个命令

现在还没有到报错的位置,我们使用n或者直接回车重复执行上一个命令

Python数据错误返还 python出错了怎么返回_debug_03

4.3 使用p打印变量值

在Pdb中我们可以使用p 变量名来查看变量值,比如我们查看变量temp的值

Python数据错误返还 python出错了怎么返回_pdb_04

4.4 使用l查看上下行代码

在Pdb中我们可以使用 Python数据错误返还 python出错了怎么返回_python_05 查看当前行上下几行代码

Python数据错误返还 python出错了怎么返回_debug_06

4.5 使用s进入子函数

现在,我们来到出错的这一行,之所以报错就是传进去变量出了问题,因此我们可以在pdb交互行中使用s来进入子函数test()

Python数据错误返还 python出错了怎么返回_python_07

4.6 使用r执行函数直到结束

在pdb中可以使用r来执行当前运行函数到结束

Python数据错误返还 python出错了怎么返回_pdb_08

4.7 使用c停止调试并继续运行

Python数据错误返还 python出错了怎么返回_debug_09

可以发现提示了错误信息:TypeError: can only concatenate str (not "int") to str 所以我们进行了调试:将temp = 'ready '修改为temp =0

Python数据错误返还 python出错了怎么返回_debug_10


可以使用c命令继续执行命令

4.8 输入q直接退出调试界面

Python数据错误返还 python出错了怎么返回_pdb_11

5 写在最后

  • 多线程相关
  • 比较大型的项目

上面两种情况下,pdb将不是最好的选择,会显得力不从心,因此我们需要灵活选择调试方案。