Python PDB调试处理
pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。

下面结合具体的实例讲述如何使用 pdb 进行调试
方式1:在需要打断点的代码前加上 import pdb; pdb.set_trace()
方式2:在需要打断点的代码前加上breakpoint() ----python3.6版本以后使用
代码示例:
s = ''
n = int(s)
# import pdb;pdb.set_trace()
breakpoint()
print(n)
6 print(10/n)
在pycharm中执行代码:此时断点定位到第五行 print(n)

常用命令1:help --查看pdb中的帮助

常用命令2:list或者l 列出当前执行语句周围11条代码
l first 列出first行周围11条代码
l first second 列出first--second范围的代码,如果second<first,second将被解析为行数

常用命令3:break或者b 添加断点
b 列出当前所有断点,和断点执行到统计次数
b line_no:当前脚本的line_no行添加断点
b filename:line_no:脚本filename的line_no行添加断点
b function:在函数function的第一条可执行语句处添加断点

常用命令4:cl:(clear)清除断点
cl 清除所有断点
cl bpnumber1 bpnumber2... 清除断点号为bpnumber1,bpnumber2...的断点
cl lineno 清除当前脚本lineno行的断点
cl filename:line_no 清除脚本filename的line_no行的断点
常用命令5:disable:停用断点,参数为bpnumber,和cl的区别是,断点依然存在,只是不启用
常用命令6:enable:激活断点,参数为bpnumber
常用命令7:s:(step)执行下一条命令
如果本句是函数调用,则s会执行到函数的第一句,进入函数内部

函数内容如下:

接下来执行s命令,进入函数内部执行内部第一条语句

常用命令8:n:(next)执行下一条语句
如果本句是函数调用,则执行函数,接着执行当前执行语句的下一条。直接将函数执行完
将函数中的两条语句直接执行

常用命令9:r:(return)执行当前运行函数到结束
常用命令10:c:(continue)继续执行,直到遇到下一条断点
常用命令11:a:(args)列出当前执行函数的函数
常用命令12:p expression:(print)输出expression的值
常用命令13:pp expression:好看一点的p expression
常用命令14:run:重新启动debug,相当于restart
常用命令15:q:(quit)退出debug
常用命令16:j lineno:(jump)设置下条执行的语句函数
只能在堆栈的最底层跳转,向后重新执行,向前可直接执行到行号
常用命令17:unt:(until)执行到下一行(跳出循环),或者当前堆栈结束
常用命令18:condition bpnumber conditon,给断点设置条件,当参数condition返回True的时候bpnumber断点有效,否则bpnumber断点无效
注意:
1:直接输入Enter,会执行上一条命令;
2:输入PDB不认识的命令,PDB会把他当做Python语句在当前环境下执行;
参考文章:https://blog.csdn.net/AFishhhhhh/article/details/81006066
https://www.cnblogs.com/xiaohai2003ly/p/8529472.html
Python PDB调试处理的更多相关文章
- python pdb调试以及sublime3快捷键设置
python pdb调试以及sublime3快捷键设置 pdb调试 如果对gdb比较熟悉的话,pdb就很容易上手.以一个demo快速了解常用的调试命令. def test(a): while True ...
- python pdb 调试
命令行 Python -m pdb xxx.py l ----> list 显示当前代码 n ----> next 向下执行一行代码 c ----> continue 继续执行代码 ...
- python pdb调试
在交互环境中通常使用pdb.run来调试: import pdb def pdb_test(arg): for i in range(arg): print(i) return arg pdb.run ...
- python pdb调试模块使用
一般在需要调试的文件加入下面代码即可 ################ _DEBUG = True ... if _DEBUG == True import pdb pdb.set_trace() # ...
- 使用pdb调试python
python pdb调试 python -m pdb myscript.py #注意这会重启myscript.py,这样启动的话,代码每一行都是一个节点 也可以在程序中这么设置断点: import p ...
- Python 代码使用pdb调试技巧
Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 pyt ...
- python学习笔记之pdb调试
之前一直说要学python可还是一直停留在看的层面,昨天大神手把书教我pdb调试,说要摆脱IDE集成开发环境编程,感激不尽,立一个flag,python一定要入门! 1.进入方式 1)windows ...
- python错误调试print、assert、logging、pdb、pdb.set_trace()
世界人都知道,程序总会有bug存在.复杂点的bug一般人不能一眼看出,这就一要一套调试程序的手段. 方法一:使用print()函数直接打印: >>> def foo(s): ... ...
- Pdb— Python的调试器
参考:Pdb- Python的调试器 pdb 模块定义了一个交互式源代码调试器,用于 Python 程序.它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及在任何堆栈帧的上 ...
随机推荐
- 计蒜客 ACM训练联盟周赛 第一场 Christina式方格取数 思维
助手Christina发明了一种方格取数的新玩法:在n*m的方格棋盘里,每个格子里写一个数.两个人轮流给格子染色,直到所有格子都染了色.在所有格子染色完后,计算双方的分数.对于任意两个相邻(即有公共边 ...
- VS2017 之 MYSQL实体数据模
Photon Server 和 Unity3D 数据交互: Photon Server 服务端编程 Unity3D 客户端编程 VS2017 之 MYSQL实体数据模 一.新建数据库连接后,点击下一步 ...
- python实现煲机脚本
生日的时候女票送了一副新耳机,还挺帅气. 装逼界的人都知道,新耳机是有"煲"这个步骤的 至于有没有效果?怎么煲?煲多久?这些问题都是耳机界常年争执的问题,各路高手分成各种门派常年杀 ...
- BZOJ 刷题总结(持续更新)
本篇博客按照题号排序(带*为推荐题目) 1008 [HNOI2008]越狱 很经典的题了..龟速乘,龟速幂裸题,, 1010 [HNOI2008]玩具装箱toy* 斜率优化 基本算是裸题. 1012 ...
- vuex-class用法
vuex-class可以包装vuex的写法,使代码简化 Installation $ npm install --save vuex-class Example import Vue from 'vu ...
- Linux下Mysql启动异常排查方案
遇到Mysql启动异常问题,可以从以下几个方面依次进行问题排查: (1)如果遇到“Can't connect to local MySQL server through socket '/tmp/my ...
- Python:给定一个不超过5位的正整数,判断有几位
方法一:作比较 [root@python markPy]# cat five.py #!/usr/bin/python3 a=int(input(">>>>" ...
- Hbase与传统关系型数据库对比
在说HBase之前,我想再唠叨几句.做互联网应用的哥们儿应该都清楚,互联网应用这东西,你没办法预测你的系统什么时候会被多少人访问,你面临的用户到底有多少,说不定今天你的用户还少,明天系统用户就变多了, ...
- 章节十六、10-TestNG报告和日志
一.在进行自动化的过程中,日志一般采用log4j 2进行日志记录,但TestNG自己本身也带有日志记录功能(reporter),它的好处在于日志中记录的内容都是testng自动生成的. package ...
- [LeetCode]Unique Binary Search TreesII
题目:Unique Binary Search TreesII 如果要列出所有可能的二叉搜索树,可以在上面的思路上进一步. f(n) = f(0)*f(n-1) + f(1)*f(n-2) + ... ...