Python使用pdb调试代码的技巧

作者:吾非同 时间:2022-11-18 04:36:06 

Python使用pdb调试代码的技巧

什么是pdb

不知道大家在用Python写代码出现报错时是怎样调试的,从报错提示定位回去一步一步check每一行?如果没有IDE或者命令行写代码时又该怎样快速调试?这时如果使用pdb进行调试将会异常方便。

Pdb就是Python debugger,是python自带的调试器。通过 pdb 我们可以交互式的查看运行过程中变量的值、设置断点、逐行执行代码、查看代码的调用栈等等。并且如果环境没有 GUI 的话,那么 pdb 能够助你更快速的调试代码。

首先我们准备一段有问题的代码用于示例


def test(p):
 p = p + 1

return p

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

fastdebug()

这段代码很简单,当我们执行fastdebug()时,会执行fastdebug函数并在该函数中调用另一个函数test(),test函数接收一个参数p并计算p+1的值传出。很明显,在高亮的一句代码中传进去的参数temp是str,所以当我们执行上面一段代码时一定会报错

Python使用pdb调试代码的技巧

现在让我们假装不知道问题出在哪,使用pdb来调试这段代码。

使用pdb

由于pdb是python标准库因此我们可以直接import 使用

import pdb

接着在我们需要调试的代码段前设一个断点

pdb.set_trace()

应用到我们的代码:point_down:

Python使用pdb调试代码的技巧

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

使用n来执行下一行

可以看到此时调试器指向

print('start')

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

Python使用pdb调试代码的技巧

使用ENTER重复上一个命令

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

Python使用pdb调试代码的技巧

使用p打印变量值

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

Python使用pdb调试代码的技巧

使用l查看上下行代码

在Pdb中我们可以使用l查看当前行上下几行代码

Python使用pdb调试代码的技巧

使用s进入子函数

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

Python使用pdb调试代码的技巧

使用r执行函数直到结束

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

Python使用pdb调试代码的技巧

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

现在我们修改相关代码完成调试,可以使用c命令继续执行命令

Python使用pdb调试代码的技巧

当然也可以输入q直接退出调试界面

来源:http://mp.weixin.qq.com/s?__biz=MzI5NzIyMjQwNA==&mid=2247485121&idx=1&sn=53d56d0334aadb9b4f84ea8b410747b4

标签:python,pdb,调试
0
投稿

猜你喜欢

  • mysql查询慢的原因和解决方案

    2024-01-18 01:30:15
  • 对Python获取屏幕截图的4种方法详解

    2023-11-19 09:45:41
  • CodeIgniter连贯操作的底层原理分析

    2024-05-02 17:15:11
  • Python多进程写入同一文件的方法

    2023-09-08 10:20:24
  • 在JavaScript中,为什么要尽可能使用局部变量?

    2009-03-01 12:38:00
  • GO语言不固定参数函数与匿名函数的使用

    2024-02-17 14:42:17
  • python实现pptx批量向PPT中插入图片

    2021-10-05 23:18:29
  • jQuery实现表单验证功能

    2024-04-09 19:49:07
  • Python Web框架Tornado运行和部署

    2021-04-14 09:17:57
  • PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法

    2023-11-16 13:00:48
  • 打开电脑上的QQ的python代码

    2022-08-18 04:21:28
  • python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题

    2022-06-13 04:36:44
  • python中尾递归用法实例详解

    2023-10-09 06:46:15
  • Go 结构体序列化的实现

    2024-05-21 10:26:40
  • python将人民币转换大写的脚本代码

    2021-03-05 17:36:23
  • CentOS安装mysql5.7 及简单配置教程详解

    2024-01-21 08:18:51
  • Appium中scroll和drag_and_drop根据元素位置滑动

    2023-03-16 23:34:38
  • Python并发:多线程与多进程的详解

    2021-08-22 20:21:33
  • python Pandas如何对数据集随机抽样

    2023-10-02 08:28:13
  • Python无损音乐搜索引擎实现代码

    2021-01-28 19:19:02
  • asp之家 网络编程 m.aspxhome.com