IPython Debugger (ipdb) 详解,python debug调试模块

2024-04-18 02:28

本文主要是介绍IPython Debugger (ipdb) 详解,python debug调试模块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ipdb(IPython debugger), 与 pdb 类似, 是一款集成了 IPython 的 Python 代码命令行调试工具,支持 Tab 键补全语法高亮等。

文章目录

一、安装

二、使用方式

三、常用命令跟pdb差不多

一、安装

ipdb 是 Python 的第三方库,使用 pip 即可安装

pip install ipdb

二、使用方式

1、集成到代码中

在调试位置插入断点即可。

x = 1
import ipdb; ipdb.set_trace();
y = 2

程序会在执行完 x = 1 这条语句之后停下来, 并展开 IPython 环境, 此时就可以进行调试了。

当程序运行到ipdb.set_trace()的地方会自动进入debug模式。

for i in range(5):print(i)ipdb.set_trace()

2、命令式

将 ipdb 集成到代码中很方便,但是也有不灵活的缺点。对于一段比较棘手的代码,我们可能需要按步执行,边运行边跟踪代码流并进行调试,这时候使用交互式的命令式调试方法更加有效。启动 ipdb 调试环境的方法也很简单:

python -m ipdb your_code.py

三、常用命令跟pdb差不多

c:继续执行代码,直到遇到下一个断点或程序结束。
n:单步执行下一行代码(不会进入函数内部)。
s:单步进入下一行代码(如果有函数调用,则进入函数内部)。
q:退出调试器并终止程序的执行。
l:查看当前位置附近的代码。
p:打印变量的值,例如p variable_name。
h:查看帮助信息,例如h command_name。
w:查看当前的调用栈。
u:向上移动一层调用栈。
d:向下移动一层调用栈。

1、帮助

使用 h 即可调出 ipdb 的帮助。可以使用 help command 的方法查询特定命令的具体用法。

执行下一条语句

使用 n(next) 执行下一条语句。

注意: 一个函数调用也是一个语句。

2、进入函数内部

使用 s(step into) 进入函数调用的内部。

3、断点标注

使用 b line_number(break) 的方式给指定的行号位置加上断点。使用 b file_name:line_number 的方法给指定的文件(还没执行到的代码可能在外部文件中)中指定行号位置打上断点。

4、继续执行到下一个断点处

使用 c(continue) 执行代码到下一个断点处或将程序执行完毕。

5、继续执行直到返回

使用 r(return) 执行代码直到当前所在的这个函数返回。

6、跳过某段代码

使用 j line_number(jump)可以跳过某段代码,直接执行指定行号所在的代码。

7、更多的上下文

在 ipdb 调试环境中,默认只显示当前执行的代码行,以及其上下各一行的代码。如果想要看到更多的上下文代码,可以使用 l first[, second](list)命令。

其中 first 指向上最多显示的行号,second 指向下最多显示的行号(可以省略)。当 second 小于 first 时,second 指的是从 first 开始的向下的行数(相对值 vs 绝对值)。

8、位置信息

有时我们可能会忘了自己目前所在的行号。例如在打印了若干变量值后,屏幕完全被这些值占据。使用 w 或者 where 可以打印出目前所在的行号位置以及上下文信息。

9、变量类别

可以使用 whatis variable_name 的方法,查看变量的类别。

10、列出当前函数的全部参数

当调试到一个函数内部的时候,可以使用 a(argument) 打印出传入函数的所有参数的值。

11、打印

使用 p(print) 和 pp(pretty print) 可以打印表达式的值。

12、清除断点

使用 cl 或者 clear file:line_number 清除断点。如果没有参数,则清除所有断点。

13、重启

使用 restart 重新启动调试器,断点等信息都会保留。restart 实际是 run 的别名,使用 run args 的方式传入参数。

14、退出

使用 q 退出调试,并清除所有信息。

这篇关于IPython Debugger (ipdb) 详解,python debug调试模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913527

相关文章

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一