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

最新文章

  1. Java基础-多线程编程-1.随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市。分别用Runnable接口和Thread类实现。
  2. PHP使用内置函数生成图片的方法详解
  3. 问题解决——VC 断点 无效 一个可能情况?
  4. 控件(文本类): AutoSuggestBox
  5. linux下如何编译python生成libpython2.5.so动态库
  6. 传智播客C/C++学员荣膺微软&amp;Cocos 2d-x黑客松最佳创新奖
  7. ASP.NET Core 源码学习之 Logging[1]:Introduction
  8. 微信小程序初探【类微信UI聊天简单实现】
  9. css(1-1)样式表
  10. 异常值处理outlier
  11. AngularJS判断checkbox/复选框是否选中并实时显示
  12. Python12/25--前端之BOM/DOM
  13. 纯手写SpringMVC到SpringBoot框架项目实战
  14. 2.Linux技能要求
  15. K-SVD字典学习及其实现(Python)
  16. 【Linux】文件描述符与重定向
  17. type=&quot;submit&quot;
  18. docker 删除所有的 docker ps -a 记录
  19. 安装完.net core sdk 后部署 ASP.NET Core 出现错误502.5
  20. 用dom4j修改xml(增加修改节点)

热门文章

  1. hdu4565 So Easy!(矩阵快速幂)
  2. 棋盘问题 POJ - 1321 [kuangbin带你飞]专题一 简单搜索
  3. 【Offer】[30] 【包含min函数的栈】
  4. 编写一个函数来找出所有不带歧义的函数名,也就是 那些只在一个模块里出现过的函数名(erlang)
  5. Salesforce LWC学习(七) Navigation &amp; Toast
  6. Sqoop介绍、安装与操作
  7. sql注入(从入门到进阶)
  8. charles 客户端进程
  9. js中的几种继承方法
  10. 启动第二个activity,然后返回数据给第一个数据