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
最新文章
- Java基础-多线程编程-1.随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市。分别用Runnable接口和Thread类实现。
- PHP使用内置函数生成图片的方法详解
- 问题解决——VC 断点 无效 一个可能情况?
- 控件(文本类): AutoSuggestBox
- linux下如何编译python生成libpython2.5.so动态库
- 传智播客C/C++学员荣膺微软&;Cocos 2d-x黑客松最佳创新奖
- ASP.NET Core 源码学习之 Logging[1]:Introduction
- 微信小程序初探【类微信UI聊天简单实现】
- css(1-1)样式表
- 异常值处理outlier
- AngularJS判断checkbox/复选框是否选中并实时显示
- Python12/25--前端之BOM/DOM
- 纯手写SpringMVC到SpringBoot框架项目实战
- 2.Linux技能要求
- K-SVD字典学习及其实现(Python)
- 【Linux】文件描述符与重定向
- type=";submit";
- docker 删除所有的 docker ps -a 记录
- 安装完.net core sdk 后部署 ASP.NET Core 出现错误502.5
- 用dom4j修改xml(增加修改节点)
热门文章
- hdu4565 So Easy!(矩阵快速幂)
- 棋盘问题 POJ - 1321 [kuangbin带你飞]专题一 简单搜索
- 【Offer】[30] 【包含min函数的栈】
- 编写一个函数来找出所有不带歧义的函数名,也就是 那些只在一个模块里出现过的函数名(erlang)
- Salesforce LWC学习(七) Navigation &; Toast
- Sqoop介绍、安装与操作
- sql注入(从入门到进阶)
- charles 客户端进程
- js中的几种继承方法
- 启动第二个activity,然后返回数据给第一个数据