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

相关文章

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os