1 描述

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,

主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等

调试作用 :

可以让程序单步执行,观察中间结果

可以设定指定断点,进行特定位置观察

2 调试命令

完整命令 简写命令 描述
args a 打印当前函数的参数
break b 设置断点
clear cl 清除断点
condition 设置条件断点
continue c或者cont 继续运行,知道遇到断点或者脚本结束
disable 禁用断点
enable 启用断点
help h 查看pdb帮助
ignore 忽略断点
jump j 跳转到指定行数运行
list l 列出脚本清单
next n 执行下条语句,遇到函数不进入其内部
p p 打印变量值,也可以用print
quit q 退出 pdb
return r 一直运行到函数返回
tbreak 设置临时断点,断点只中断一次
step s 执行下一条语句,遇到函数进入其内部
where w 查看所在的位置
! 在pdb中执行语句

注意:

1:直接输入Enter,会执行上一条命令;

2:输入PDB不认识的命令,PDB会把他当做Python语句在当前环境下执行;

3 示例

3.1 示例1(测试代码)

  1. import pdb
  2. a = "aaa"
  3. pdb.set_trace()
  4. b = "bbb"
  5. c = "ccc"
  6. final = a + b + c
  7. print(final)
  1. 运行
  1. > /home/tarena/桌面/t.py(4)<module>()
  2. -> b = "bbb"
  3. (Pdb) n
  4. > /home/tarena/桌面/t.py(5)<module>()
  5. -> c = "ccc"
  6. (Pdb)
  7. > /home/tarena/桌面/t.py(6)<module>()
  8. -> final = a + b + c
  9. (Pdb)
  10. > /home/tarena/桌面/t.py(7)<module>()
  11. -> print(final)
  12. (Pdb)
  13. aaabbbccc
  14. --Return--
  15. > /home/tarena/桌面/t.py(7)<module>()->None
  16. -> print(final)
  17. (Pdb)

开始调试:

直接运行脚本,会停留在  pdb.set_trace()  处;  pdb.set_trace() 的作用:从 pdb.set_trace()位置处进入调试状态,在该语句后面的代码单步执行

选择 n+enter 可以执行当前的 statement。在第一次按下了 n+enter 之后可以直接按 enter 表示重复执行上一条 debug 命令。

  1. import pdb
  2. pdb.set_trace()
  3.  
  4. def a(n):
  5. print(n + 1)
  6. print(n + 2)
  7. print(n + 3)
  8. print(n + 4)
  9. print(n + 5)
  10. print(n + 6)
  11.  
  12. def b(n):
  13. print('b',n)
  14. a(n + 1)
  15. print("b 结束")
  16.  
  17. def c():
  18. x = 100
  19. b(x + 100)
  20.  
  21. c()

运行

  1. > /home/tarena/桌面/t.py(4)<module>()
  2. -> def a(n):
  3. (Pdb) n
  4. > /home/tarena/桌面/t.py(12)<module>()
  5. -> def b(n):
  6. (Pdb)
  7. > /home/tarena/桌面/t.py(17)<module>()
  8. -> def c():
  9. (Pdb)
  10. > /home/tarena/桌面/t.py(21)<module>()
  11. -> c()
  12. (Pdb)
  13. b 200
  14. 202
  15. 203
  16. 204
  17. 205
  18. 206
  19. 207
  20. b 结束
  21. --Return--
  22. > /home/tarena/桌面/t.py(21)<module>()->None
  23. -> c()
  24. (Pdb)

3.2 示例2(代码调试)

详细代码

https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/

https://docs.python.org/3.6/library/pdb.html

python学习笔记012——pdb调试的更多相关文章

  1. python学习笔记之pdb调试

    之前一直说要学python可还是一直停留在看的层面,昨天大神手把书教我pdb调试,说要摆脱IDE集成开发环境编程,感激不尽,立一个flag,python一定要入门! 1.进入方式 1)windows ...

  2. Python学习笔记012——装饰器

    1 装饰器 1.1装饰器定义 在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator). 1.2 装饰器分类 装饰器:函数装饰器,类装饰器,函数的装饰器,类的装饰器 装饰器:函数装饰函 ...

  3. python学习笔记012——locals与globals

    1 定义 globals() 功能:收集全局变量参数:无返回值:得到一个收集全局变量的字典(会包含系统的内置变量) locals() 功能:收集局部变量参数:无返回值:得到一个收集局部变量的字典 a ...

  4. [Python学习笔记]调试

    编码占了编程工作量的90%,调试占了另外90%,这是一个流传着的笑话.调试在编程中占有很大的分量,即使专业的程序员也一直在制造缺陷. 抛出异常 抛出异常相当于是说:"停止运行这个函数中的代码 ...

  5. Python学习笔记(十三)

    Python学习笔记(十三): 模块 包 if name == main 软件目录结构规范 作业-ATM+购物商城程序 1. 模块 1. 模块导入方法 import 语句 import module1 ...

  6. Deep learning with Python 学习笔记(4)

    本节讲卷积神经网络的可视化 三种方法 可视化卷积神经网络的中间输出(中间激活) 有助于理解卷积神经网络连续的层如何对输入进行变换,也有助于初步了解卷积神经网络每个过滤器的含义 可视化卷积神经网络的过滤 ...

  7. 雨痕 的《Python学习笔记》--附脑图(转)

    原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意 ...

  8. 大学四年的Python学习笔记分享之一,内容整理的比较多与仔细

    翻到以前在大学坚持记录的Python学习笔记,花了一天的时间整理出来,整理时不经回忆起大学的时光,一眨眼几年就过去了,现在还在上学的你们,一定要珍惜现在,有个充实的校园生活.希望这次的分享对于你们有学 ...

  9. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

随机推荐

  1. 使用FlexiGrid实现Extjs表格的效果-网络传输小,更方便!

      近一段时间Extjs真的是风光无限好,只要是个做CRM/HRM之类的企业现在都在琢磨怎么在项目中用它,不过兄弟我可是不敢,原因很简单:太大/太笨/源码不好调试.但是对于Extjs漂亮的表格与功能的 ...

  2. C# 开发者代码审查清单

    这是为C#开发者准备的通用性代码审查清单,可以当做开发过程中的参考.这是为了确保在编码过程中,大部分通用编码指导原则都能注意到.对于新手和缺乏经验(0到3年工作经验)的开发者,参考这份清单编码会很帮助 ...

  3. IOS之导航控制器

    UINavigationController是用于构建分层应用程序的主要工具,主要采用栈形式来实现视图.任何类型的视图控制器都可放入栈中.在设计导航控制器时需要指定根视图即用户看到的第一个视图.根视图 ...

  4. Mysql创建多列唯一索引Sql

    ALTER TABLE `t_city_combo` ADD UNIQUE INDEX ` t_city_combo_index` (`combo_id`, `combo_name`, `city_i ...

  5. 经典,HTML5游戏,超级玛丽

    在线演示 在线演示 本地下载 这是一款使用HTML5开发的超级玛丽,有没有点儿时的记忆?长按向上键,可以跳的更高哦.如果你也喜欢可以当成休闲游戏,如果你是开发者,不防下载下来看看是如何生成的.

  6. shell常用调试方法

    检查语法 -n选项只做语法检查,而不执行脚本. sh -n script_name.sh 启动调试 sh -x script_name.s 进入调试模式后,Shell依次执行读入的语句,产生的输出中有 ...

  7. MySQL Cluster管理节点配置文件-数据节点4G内存

    自己测试机器上搭建使用,大家可以参考一下 [NDBD DEFAULT] #TotalSendBufferMemory = 256M NoOfReplicas=2 DataMemory=2500M In ...

  8. 使用RunWith注解改变JUnit的默认执行类,并实现自已的Listener

    使用RunWith注解改变JUnit的默认执行类,并实现自已的Listener在平时的单元测试,如果不使用RunWith注解,那么JUnit将会采用默认的执行类Suite执行,如下类: public  ...

  9. Jacoco覆盖率工具使用

    Jacoco介绍 Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序.很多第 ...

  10. Navicat如何直接修改表中数据?

    Navicat如何直接修改表中数据?