python学习笔记012——pdb调试
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(测试代码)
import pdb a = "aaa" pdb.set_trace() b = "bbb" c = "ccc" final = a + b + c print(final)
运行
> /home/tarena/桌面/t.py(4)<module>() -> b = "bbb" (Pdb) n > /home/tarena/桌面/t.py(5)<module>() -> c = "ccc" (Pdb) > /home/tarena/桌面/t.py(6)<module>() -> final = a + b + c (Pdb) > /home/tarena/桌面/t.py(7)<module>() -> print(final) (Pdb) aaabbbccc --Return-- > /home/tarena/桌面/t.py(7)<module>()->None -> print(final) (Pdb)
开始调试:
直接运行脚本,会停留在 pdb.set_trace() 处; pdb.set_trace() 的作用:从 pdb.set_trace()位置处进入调试状态,在该语句后面的代码单步执行。
选择 n+enter 可以执行当前的 statement。在第一次按下了 n+enter 之后可以直接按 enter 表示重复执行上一条 debug 命令。
import pdb
pdb.set_trace()
def a(n):
print(n + 1)
print(n + 2)
print(n + 3)
print(n + 4)
print(n + 5)
print(n + 6)
def b(n):
print('b',n)
a(n + 1)
print("b 结束")
def c():
x = 100
b(x + 100)
c()
运行
> /home/tarena/桌面/t.py(4)<module>() -> def a(n): (Pdb) n > /home/tarena/桌面/t.py(12)<module>() -> def b(n): (Pdb) > /home/tarena/桌面/t.py(17)<module>() -> def c(): (Pdb) > /home/tarena/桌面/t.py(21)<module>() -> c() (Pdb) b 200 202 203 204 205 206 207 b 结束 --Return-- > /home/tarena/桌面/t.py(21)<module>()->None -> c() (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调试的更多相关文章
- python学习笔记之pdb调试
之前一直说要学python可还是一直停留在看的层面,昨天大神手把书教我pdb调试,说要摆脱IDE集成开发环境编程,感激不尽,立一个flag,python一定要入门! 1.进入方式 1)windows ...
- Python学习笔记012——装饰器
1 装饰器 1.1装饰器定义 在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator). 1.2 装饰器分类 装饰器:函数装饰器,类装饰器,函数的装饰器,类的装饰器 装饰器:函数装饰函 ...
- python学习笔记012——locals与globals
1 定义 globals() 功能:收集全局变量参数:无返回值:得到一个收集全局变量的字典(会包含系统的内置变量) locals() 功能:收集局部变量参数:无返回值:得到一个收集局部变量的字典 a ...
- [Python学习笔记]调试
编码占了编程工作量的90%,调试占了另外90%,这是一个流传着的笑话.调试在编程中占有很大的分量,即使专业的程序员也一直在制造缺陷. 抛出异常 抛出异常相当于是说:"停止运行这个函数中的代码 ...
- Python学习笔记(十三)
Python学习笔记(十三): 模块 包 if name == main 软件目录结构规范 作业-ATM+购物商城程序 1. 模块 1. 模块导入方法 import 语句 import module1 ...
- Deep learning with Python 学习笔记(4)
本节讲卷积神经网络的可视化 三种方法 可视化卷积神经网络的中间输出(中间激活) 有助于理解卷积神经网络连续的层如何对输入进行变换,也有助于初步了解卷积神经网络每个过滤器的含义 可视化卷积神经网络的过滤 ...
- 雨痕 的《Python学习笔记》--附脑图(转)
原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意 ...
- 大学四年的Python学习笔记分享之一,内容整理的比较多与仔细
翻到以前在大学坚持记录的Python学习笔记,花了一天的时间整理出来,整理时不经回忆起大学的时光,一眨眼几年就过去了,现在还在上学的你们,一定要珍惜现在,有个充实的校园生活.希望这次的分享对于你们有学 ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
随机推荐
- [21] Mesh法线的生成算法
// 生成顶点法线 bool YfCalculateVertexNormal ( void* pNormalsBuffer, Yuint normalStriding, Yuint normalPos ...
- 同时启动多个Tomcat服务器
以下步骤能够同时启动两个tomcat:1.特别要注意:不要设置CATALINA_HOME 2.分别修改安装目录下的conf子目录中的server.xml文件: a.修改http访问端口(默认为8080 ...
- 【面试必读】一不注意就做错的五道JavaScript题目
如果不会,可以存在DW中运行试一下哦~ 1.这段代码会输出什么? function Container( properties ) { var objthis = this; for ( var i ...
- natapp搭建外网服务器
首先在natapp官网注册一个账号:https://natapp.cn/ 注册好后登陆网站,点击左侧菜单中的购买隧道: 点击免费隧道后进入隧道配置页面,我这里已经配置好了直接展示如下: 点击保存后点击 ...
- [JSP]JSP中include指令和include动作的差别
include指令是编译阶段的指令,即include所包括的文件的内容是编译的时候插入到JSP文件里,JSP引擎在推断JSP页面未被改动,否则视为已被改动. 因为被包括的文件是在编译时才插入的.因此假 ...
- PHP json_encode转换空数组为对象
问题描述: php返回json格式的数据,当返回数据的为数组,且key为字符串时,json化后将返回jsonObject,但是如果是空数组,有可能返回的就是jsonArray,数据结构不一致导致端解析 ...
- 重新安装 RCU-数据库 2014-11-22
删除数据库Endv(原RCU数据库) 重建数据库为LLS(新RCU数据库)..略.. Database Control URL 为 https://www:1158/em 管理资料档案库已置于安全模式 ...
- N年的经验在别人眼里是怎么看的?
很多人简历上都喜欢总结这么一句话:N年XXX领域的经验.N值越大,似乎越NB. 可是,我怎么看到很多人做了几十年的饭,水平变化不大,和专业厨师还是差得远. 还有写一辈子字的,开一辈子车的,这些人也和专 ...
- UE查找和替换技巧实例
1 删除多余的空行 如果是在WORD中,则查找^p^p替换为^p. 如果是在EXCEL里,则为全部选中,然后点击编辑,定位,定位条件,空值. 将全部选中空白的行,如图所示 再次点击编辑,删除,删除整行 ...
- Nor Flash启动和Nand Flash启动时Stepping stone都在哪?
当从Norflash启动时,Steppingstone被映射到地址 0x4000 0000 至 0x4000 0FFF: 当从Nandflash启动时,Steppingstone被映射到地址 0x00 ...