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 退出调试,并清除所有信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识ansible核心模块

目录 1、ansible模块 1.1 ansible常用模块 1.2 ansible-doc -l 列出当前anisble服务所支持的所有模块信息,按q退出 1.3 ansible-doc 模块名称 随机查看一个模块信息 2、运行临时命令 2.1 ansible命令常用的语法格式 3、常用模块详解与配置实例 3.1命令与…

​宁德时代:用一块电池玩转两个万亿赛道

2022 到 2023 连续两年,被称为国内储能行业的大储(发电侧、电网侧)元年和中储(工商业)元年,整个储能行业可谓是异常火爆,众多资本或企业纷纷涌入该赛道。 对于行业从业者来说,所从事…

力扣HOT100 - 206. 反转链表

解题思路: 迭代(双指针) class Solution {public ListNode reverseList(ListNode head) {ListNode cur head, pre null;while(cur ! null) {ListNode tmp cur.next; // 暂存后继节点 cur.nextcur.next pre; // 修改 next 引用指…

MOSFET效应管

【学习笔记】 金属氧化物半导体场效应晶体管(Metal Oxide Semiconductor Field Effect Transistor,简称MOSFET) MOSFET是三个端子器件,具有栅极、漏极和源极,栅极端子与漏极和源极之间的主导电流通道电气隔离&#xf…

连锁服装店用哪个进销存软件好

连锁服装店的进销存管理对于业务的高效运作至关重要,而选择合适的进销存软件能够极大地提升管理效率和经营水平。本文将介绍四款优秀的进销存软件,并重点关注商淘云连锁服装进销存管理系统,探讨其特点和优势。 1. 商淘云连锁服装进销存管理系…

喜报|炼石入选2024中国网络安全全景图 密码与数据安全六领

2024年4月12日,国内专业安全媒体安全牛发布《中国网络安全行业全景图(第十一版)》。第十一版全景图划分了16个一级安全分类和108个二级安全分类,汇集了510家安全厂商申报,实际收录为454家。全景图综合考量了产品的实用…

一文读懂uniapp中的tabBar底部导航

目录 1. 基本知识2. Demo 1. 基本知识 UniApp 中的 tabBar 是用来在应用程序底部显示可切换的选项卡的组件,通常用于实现底部导航栏 允许用户通过点击不同的选项卡来切换应用程序的不同页面或功能模块 其代码如下: "tabBar":{"color&q…

深入解析Rivest Cipher 4:理论与实践

title: 深入解析Rivest Cipher 4:理论与实践 date: 2024/4/17 20:30:58 updated: 2024/4/17 20:30:58 tags: 密码学RC4算法流密码密钥调度安全分析优缺点应用实践 第一章:引言 密码学简介: 密码学是研究如何保护通信和信息安全的学科。它涉…

# 从浅入深 学习 SpringCloud 微服务架构(一)基础知识

从浅入深 学习 SpringCloud 微服务架构(一)基础知识 1、系统架构演变: 1)单体应用架构。如电商项目。 用户管理、商品管理、订单管理,在一个模块里。 优点:开发简单,快速,适用于…

React中redux、react-redux、@reduxjs/toolkit状态管理库的使用方式

效果 下载依赖 npm install redux react-redux reduxjs/toolkit --save在src目录下创建文件 创建index.ts文件 import { configureStore } from reduxjs/toolkit import userSlice from ./userReducerconst store configureStore({reducer: {user: userSlice.reducer} }) //…

代码随想录算法训练营第四十三天| LeetCode 1049.最后一块石头的重量II、494. 目标和、474.一和零

一、LeetCode 1049.最后一块石头的重量II 文章讲解/视频讲解:https://programmercarl.com/1049.%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8FII.html#%E6%80%9D%E8%B7%AF 状态:已解决 1.思路 其实这个题跟上个题…

ssm056基于Java语言校园快递代取系统的设计与实现+jsp

校园快递代取系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本校园快递代取系统就是在这样的大环境下诞生,其可以帮助管理者在短…

4核8G配置服务器多少钱?2024年阿里云服务器700元1年价格便宜

4核8G配置服务器多少钱?2024年阿里云服务器700元1年价格便宜。阿里云4核8G服务器租用优惠价格700元1年,配置为ECS通用算力型u1实例(ecs.u1-c1m2.xlarge)4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选,CPU采…

Linux下的权限:论老流氓root的存在

文章目录 用户身份切换提权 权限管理文件访问者文件访问权限文件类型目录权限默认权限粘滞位 用户 Linux下有两中用户:超级用户(root)、普通用户 超级用户:可以在Linux系统下做任何事情,不受到限制普通用户&#xff…

Java PDF文件流传输过程中速度很慢,如何解决?

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…

VulnHub系列 DC-4靶机 渗透详细过程 | 红队打靶

VulnHub系列 DC-4靶机详细渗透测试过程 目录 VulnHub系列 DC-4靶机详细渗透测试过程一、将靶机导入到虚拟机当中二、渗透流程主机发现端口扫描Web渗透暴力破解命令执行反弹shellSSH暴力破解提权 一、将靶机导入到虚拟机当中 靶机地址: https://download.vulnhub.c…

Matlab|基于改进遗传算法的配电网故障定位

目录 1 主要内容 2 部分代码 3 部分程序结果 4 下载链接 1 主要内容 该程序复现文章《基于改进遗传算法的配电网故障定位》,将改进的遗传算法应用于配电网故障定位中, 并引入分级处理思想, 利用配电网呈辐射状的特点, 首先把整个配电网划分为主干支路和若干独立…

中国12.5米DEM地形瓦片数据免费领取!

之前向大家公开了中国34个省12.5米DEM地形瓦片数据的免费领取链接,大家对12.5米DEM数据的使用需求很强烈,领取也很积极,也有不少读者反馈能否提供全国范围的12.5米DEM地形瓦片数据,因为分省级地形瓦片数据想要合并成全国数据&…

ES-全文搜索

模糊查询: 写数据通过id路由到master分片 查询数据到一个节点,该节点会作为一个调度节点判断负载等情况将请求转发到真正节点(一般し轮询)

提升批量邮箱API发送效率:技巧与策略探讨

批量邮箱API发送邮件时如何提高发送效率?1、优化邮件内容和目标客户列表;2、利用邮件模板和个性化功能;3、合理设置发送时间和频率;4、使用A/B测试和数据分析;5、保持邮件列表更新和清洁。 一、优化邮件内容和目标客户…