pdb是ptyhon内置的一个调试库,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。

实际工作过程中都是采用linux远程ssh模式,无法可视化界面,那么调试技巧就是pdb。

pdb调试常见命令:

示例代码:

def test(x):x = x + 1return xdef test_debug():print('start')temp = 'my is str'print('ok')res = test(temp)print('end')test_debug()

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

运行结果:

接下来开始使用pdb开始调试。

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

接下来再使用pdb中常用命令:

在弹出的文本框中输入n即可执行该行,并且箭头将指向下一行即将执行的代码。目前还没有到报错的位置,继续使用n或者直接回车重复执行上一个命令。

使用p打印变量值,在Pdb中可以使用p + 变量名来查看变量值,比如查看变量temp的值;使用l查看上下行代码,在Pdb中可以使用l查看当前行上下几行代码.

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

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

使用c停止调试并继续运行,现在我们修改相关代码完成调试,可以使用c命令继续执行命令,当然也可以输入q直接退出调试界面.

pdb用法总结:

# 导入
import pdb
# 设置断点
pdb.set_trace()
# -------------------
# 断点命令
p + 变量名 # 打印变量  或者直接变量名
n # 执行下一行
s # 进入函数
r # 执行函数到结束
c # 停止调试并继续运行
q # 退出调试
# enter 重复上一次命令

补充:

pdb命令行:

1)进入命令行Debug模式,python -m pdb xxx.py2)h:(help)帮助3)w:(where)打印当前执行堆栈4)d:(down)执行跳转到在当前堆栈的深一层(个人没觉得有什么用处)5)u:(up)执行跳转到当前堆栈的上一层6)b:(break)添加断点b 列出当前所有断点,和断点执行到统计次数b line_no:当前脚本的line_no行添加断点b filename:line_no:脚本filename的line_no行添加断点b function:在函数function的第一条可执行语句处添加断点7)tbreak:(temporary break)临时断点在第一次执行到这个断点之后,就自动删除这个断点,用法和b一样8)cl:(clear)清除断点cl 清除所有断点cl bpnumber1 bpnumber2... 清除断点号为bpnumber1,bpnumber2...的断点cl lineno 清除当前脚本lineno行的断点cl filename:line_no 清除脚本filename的line_no行的断点9)disable:停用断点,参数为bpnumber,和cl的区别是,断点依然存在,只是不启用10)enable:激活断点,参数为bpnumber11)s:(step)执行下一条命令如果本句是函数调用,则s会执行到函数的第一句12)n:(next)执行下一条语句如果本句是函数调用,则执行函数,接着执行当前执行语句的下一条。13)r:(return)执行当前运行函数到结束14)c:(continue)继续执行,直到遇到下一条断点15)l:(list)列出源码l 列出当前执行语句周围11条代码l first 列出first行周围11条代码l first second 列出first--second范围的代码,如果second<first,second将被解析为行数16)a:(args)列出当前执行函数的函数17)p expression:(print)输出expression的值18)pp expression:好看一点的p expression19)run:重新启动debug,相当于restart20)q:(quit)退出debug21)j lineno:(jump)设置下条执行的语句函数只能在堆栈的最底层跳转,向后重新执行,向前可直接执行到行号22)unt:(until)执行到下一行(跳出循环),或者当前堆栈结束23)condition bpnumber conditon,给断点设置条件,当参数condition返回True的时候bpnumber断点有效,否则bpnumber断点无效

参考博文:python之pdb调试_Raymond。的博客-CSDN博客_pdb调试命令

python中调试pdb库用法详解相关推荐

  1. python中定时任务schedule库用法详解

    schedule是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间.         如果想执行多个任务,也可以添加多个task. 首先安装schedule库: pip ...

  2. Python中数组切片的用法详解

    Python中数组切片的用法详解 一.python中"::-1"代表什么? 二.python中":"的用法 三.python中数组切片 三.numpy中的整数数 ...

  3. python中split()函数的用法详解

    一.split()函数的简单应用 1.split()函数 split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串.它是按指定的分隔符,把一个字符串分 ...

  4. python中f字符串f-string用法详解

    一.f-string字符串用法 1.f字符串用法 f-string: formatted string literals, 格式化字符串常量. 格式化 {} 内容,不在 {} 内的照常展示输出,如果你 ...

  5. Python BS4解析库用法详解

    Python BS4解析库用法详解 Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 第三方库,它可以从 HTML 或 XML 文档中快速地提取指定的数据.Bea ...

  6. python中如何反解函数_PyTorch中反卷积的用法详解

    pytorch中的 2D 卷积层 和 2D 反卷积层 函数分别如下: class torch.nn.Conv2d(in_channels, out_channels, kernel_size, str ...

  7. python search用法,Python-re中search()函数的用法详解(查找ip)

    1.首先来看一下search()和find()的区别 import re s1 = "2221155" #search 字符串第一次出现的位置 print(re.search(&q ...

  8. python explode_pandas dataframe 中的explode函数用法详解

    在使用 pandas 进行数据分析的过程中,我们常常会遇到将一行数据展开成多行的需求,多么希望能有一个类似于 hive sql 中的 explode 函数. 这个函数如下: Code # !/usr/ ...

  9. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

最新文章

  1. [技术基础]计算机网络技术基础名词解释
  2. linux多网口dhcp服务绑定,Linux系统实现多网段DHCP服务器配置
  3. 数据结构 快速排序(详解)
  4. 通过NAT转发实现私网对外发布信息
  5. asp.mvc 4项目发布文件目录结构_Spring Boot项目搭建与启动
  6. Codevs 1191 数轴染色
  7. Chapter 2 向量空间
  8. 第三次作业 词频统计
  9. 67. 查询分页数据(2)
  10. Matlab 常用功能
  11. J2ME-CLDC/MIDP资源
  12. web前端入坑第二篇:web前端到底怎么学?干货资料!
  13. Unity3d 发动机原理详细介绍
  14. 优化TCP/IP,HTTP,Https,Socket,websocket,弱网及网络协议(概念)
  15. Android studio Minimum supported Gradle version is 7.2. Current version is 7.0.2.
  16. xbrowser连接Linux没有桌面,Windows下使用Xbrowser连接Centos 6.x自带的远程桌面
  17. HTML+CSS 简易搜索框
  18. 五个受用一生的学习网站,高效免费,想提升自己能力的快来看看
  19. 19秋计算机应用基础在线作业2,计算机应用基础19秋在线作业2 Windows 下能浏览并管理文件 驱动器及网络连接的强大工具是...
  20. 阿里云Linux服务器部署Mysql,JDK以及Tomcat教程

热门文章

  1. RubyMine 4 注册 序列号
  2. html 图片Img的点击事件
  3. 如何安装centos详细步骤
  4. 【ENVI入门系列】04.图像几何校正
  5. k-近邻算法简介及api的初步使用
  6. Java并发编程:volatile关键字解析
  7. linux服务器reiserfs文件系统损坏,你只需学会这个方法就能修复
  8. 实现微信推送的小工具Server酱
  9. 一次Spring技术的面试,被面试官怼的怀疑人生。。
  10. 运行无间:阿里巴巴运维保障体系的一种最佳实践