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调试处理的更多相关文章

  1. python pdb调试以及sublime3快捷键设置

    python pdb调试以及sublime3快捷键设置 pdb调试 如果对gdb比较熟悉的话,pdb就很容易上手.以一个demo快速了解常用的调试命令. def test(a): while True ...

  2. python pdb 调试

    命令行 Python -m pdb xxx.py l ----> list 显示当前代码 n ----> next 向下执行一行代码 c ----> continue 继续执行代码 ...

  3. python pdb调试

    在交互环境中通常使用pdb.run来调试: import pdb def pdb_test(arg): for i in range(arg): print(i) return arg pdb.run ...

  4. python pdb调试模块使用

    一般在需要调试的文件加入下面代码即可 ################ _DEBUG = True ... if _DEBUG == True import pdb pdb.set_trace() # ...

  5. 使用pdb调试python

    python pdb调试 python -m pdb myscript.py #注意这会重启myscript.py,这样启动的话,代码每一行都是一个节点 也可以在程序中这么设置断点: import p ...

  6. Python 代码使用pdb调试技巧

    Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 pyt ...

  7. python学习笔记之pdb调试

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

  8. python错误调试print、assert、logging、pdb、pdb.set_trace()

    世界人都知道,程序总会有bug存在.复杂点的bug一般人不能一眼看出,这就一要一套调试程序的手段. 方法一:使用print()函数直接打印: >>> def foo(s): ... ...

  9. Pdb— Python的调试器

    参考:Pdb- Python的调试器 pdb 模块定义了一个交互式源代码调试器,用于 Python 程序.它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及在任何堆栈帧的上 ...

随机推荐

  1. Python——最美丽的编程语言

    之前总听别人说Python有多厉害,有多好,我是不以为然的.但是当我开始接触Python的时候,我就知道它被誉为最美编程语言不是没有道理的.简短的代码,清晰明了的逻辑,方便快捷的编程工具让它注定会大放 ...

  2. 常用分享功能.超级简单,qq 微信 新浪微博分享

    <div id="share"> <a href="javascript:void(0)" share-type="qzone&qu ...

  3. Asterisk13.23.1如何增加G723编码和G729编码

    文章主要将如何配置Asterisk G729的编码和G723的编码问题 今天在配置语音电话过程中踩到一个坑,就是在对接线路过程中出现了一个报错,在传到对方线路过程中出现无法转码从而导致报错. 查看了下 ...

  4. 爬虫 之 requests

    Requests 安装pip install requests 官方设计原则:让HTTP服务于人类 一.常用方法 import requests url = "http://www.http ...

  5. 【LeetCode】62-不同路径

    题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为& ...

  6. virtualbox下最小化安装centos7后上网设置

    在虚拟机中以最小化方式安装centos7,后无法上网,因为centos7默认网卡未激活. 可以设置 文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3 将 O ...

  7. CentOS7 使用tree命令不显示中文

    1.你如果使用tree命令看见的情况是这样 [lk@localhost ~]$ tree . ├── perl5 ├── Python-.tgz ├── \\\\\\ ├── \\\\\\ ├── \ ...

  8. Centos7上安装jdk8

    CentOS7 下安装jdk8环境 1 检查服务器环境 首先,我们需要检查一下服务器是否安装过java环境,可以使用如下命令: java -version 如果已经安装有java环境,会出现类似于以下 ...

  9. Django-官网查询部分翻译(1.11版本文档)-QuerySet-字段查找-06

    目录 Making queries 进行查询 创建一个对象(一条数据记录) 保存修改的表对象 保存外键字段或多对多字段(ForeignKey or ManyToManyField fields) Re ...

  10. 跟我学SpringCloud | 第十九章:Spring Cloud 组件 Docker 化

    前面的文章<跟我学SpringCloud | 第十八篇:微服务 Docker 化之基础环境>我们介绍了基础环境系统和 JRE 的容器化,这一节我们介绍 Spring Cloud 组件的容器 ...