ipdb python下的debug利器

article/2025/3/4 16:20:15

ipdb是一个IPython的python下debug神器,支持在代码中添加断点,进行单步调试,支持在调试过程中查看各种变量的值,新增修改断点,或跳过特定断点。以往进行python代码的调试都是通过pycharm或vscode添加断点,在控制台执行时则无法进行断点控制,现在基于ipdb库,可以实现极其便捷的断点调试功能。

安装命令:pip install ipdb
ipdb官网介绍:https://pypi.org/project/ipdb/

博主把ipdb断点调试的功能分为三部分介绍,分别为基本断点调试,变量管理查看,高级断点调试。这分别对应了不同的ipdb断点调试参数。

1、基本断点调试

涉及到的知识有在代码中加断点,及ipdb参数n ,c ,s , j ,b ,cl ,回车符, q 。
在代码中加入断点仅需要import ipdb,然后在任意行插入ipdb.set_trace()即可,示例如下所示(保存为test.py)。

import ipdb
x=0
ipdb.set_trace()
print(x)
y=30
print(y)

在控制台的情况如下图可见,出现了一个ipdb的交互式控制台,在ipdb控制台中可以输入各种控制参数。
在这里插入图片描述
基本的ipdb控制参数:
n:执行下一行,对应单词next
c:执行到下一个断点,对应单词continue
s:进行单步调试,对应单词step(对函数进行单步调试时会进入函数内部,如进入print函数内部)
j:跳到当前执行文件的特定行数,对应单词jump。用法示例:j 50 ====>跳到第50行(忽略掉当前行与第50行间代码的执行)
b:在当前执行文件指定行添加断点,对应单词breakpoint。用法示例:b 50 ====>在第50行添加断点
cl:清除通过b line_number添加的断点(通过ipdb.set_trace()设置的断点是无法清除的)
回车符:输入回车符,表示执行上一次的命令(上一次执行n, 则这一次也执行n;上一次执行c, 则这一次也执行c)
q:退出执行,与exit完全等价

2、变量名输出

在ipdb控制台中,用于输出变量名的命令有a , p , pp , 变量名。
a:输出当前函数的参数(确保ipdb断点的位置在特定函数内)
p:函数p与python函数print完全相同
pp:函数pp与pprint库的美化输出相同
变量名:输出相应的变量

以下列代码为执行示例,具体输出为下图所示

import ipdb
def ecoh_base(config,keys):print(f"The config.keys is {keys}")ipdb.set_trace()#访问configprint("\n 访问config中的key")print(f"The batch size is {config['batch_size']}")print(f"The learning rate is {config['lr']}")print('all config:',config)
if __name__ == "__main__":config={'batch_size':32,'lr':0.002}ecoh_base(config,config.keys())

在这里插入图片描述

3、高级断点调试

ipdb除了上述的参数外,还支持u , d , w , l 等命令,可用于了解断点执行所在的位置。

命令详细如下所示:
u:进入当前函数的上一层环境
d:进入当前函数的下一层环境
w:查看断点所在的位置
l:输出特定行范围的代码。用法一:l 10,20===>输出第一行到第20行的代码;用法二:l 10,5===>从第10行起输出5行代码。可以看到当第一个参数大于第二个参数时,为用法二;否则为用法一。

以上命令的执行效果如下所示:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/R9EiBa8G.shtml

相关文章

js中函数传参的问题

在使用ajax或者js拼接信息在页面中显示的时候,需要向函数传参的时候往往会有问题。 如果传递的是数字类型,则是可以直接传递。不需要进行转义。 如果是字符串类型,则需要进行转义,才会以存入字符串的参数。

js函数传参

也许大家对于函数的参数都不会太在意,简单来说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。深入研究,你会发现其实没那么简单,这个传参是要分俩种情况(其实这是个错误的…

关于js函数传参的问题

js在拼接函数时,当传递的值为字符串是会出现问题,直接报错,不会进入到函数里,这是受就需要转义符来操作, 例如 var can object; onClickUpdateCollege(" can ") 这时事件触发之后,浏览器会报错…

js 立即执行函数传参问题

正确的执行函数写法如下: (function func(i) {console.log(i);})(j);(function func(i) {console.log(i);}(j));!(function func(i) {console.log(i);})(j); 看看下面这段代码有什么问题? let testStr "test string"(function func(params) …

js函数传参,如何在JavaScript函数中不传递先前参数的情况下传递第n个可选参数?

普通函数 function fn(name,age,sex){console.log(name,age,sex);}使用方法 函数的规则是,按顺序传递,如果接收参数是三位,而你只穿了两位,不会报错但是会返回undefined 箭头函数 箭头函数和普通函数使用起来没有太多的区别。 …

JavaScript函数传参原理详解——值传递还是引用传递

讨论JavaScript的传参原理之前,我们先来看一段曾经让笔者困惑了一段时间的代码 var testA1; var testB{}; function testNumber(example){example2; }function testObj(example) {example.test1; }testNumber(testA); testObj(testB); console.log(testA);//输出1 …

javascript 函数传参

通过值传递参数 在函数中调用的参数是函数的隐式参数。 JavaScript 隐式参数通过值来传递:函数仅仅只是获取值。 如果函数修改参数的值,不会修改显式参数的初始值(在函数外定义)。 隐式参数的改变在函数外是不可见的。 通过对…

前端基础知识点:JS中的参数传递详解

JS语法中的传递参数,对于初学者是一个非常重要的概念。很多小伙伴在学习“值传递”和“引用传递”时,会有不少烦恼。今天我们就来通过各种姿势全方位剖析JS中的值传递。 本文章将会用10分钟时间无死角的解析JS的传参方式,希望能对您有所帮助…

Javascript基础知识(三):函数参数(传参)

1.函数参数分类及使用 上一篇博客已经讲到函数参数有实参和形参两种。 函数参数使用时需要注意以下几点&#xff1a; 1.如果形参有两个赋值&#xff0c;而实参只给了一个值&#xff0c;那么就要把这个值赋予第一个形参.第二个形参没有赋值。 示例&#xff1a; <script&g…

js 基础-函数传参

函数中的参数传递是所有编程语言的中的基础内容。本文是介绍了js中保存基本数据类型和引用数据类型的两种方式以及在函数传参的本质。 1 简介 本文介绍了js中两种不同数据类型的数据的保存问题&#xff0c;以及赋值操作的本质&#xff0c;最后指出函数传参就是赋值操作&#…

php获取qq音乐的api类,利用QQ音乐api集成的php歌曲搜索

获取最新音乐 url&#xff1a; https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?uin0&notice0&platformh5&needNewCode1&tpl3&pagedetail&typetop&topid27 获取推荐歌曲 url&#xff1a; https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.…

Vue之跨域调用网易云音乐API及QQ音乐API

今天在做VUE项目的时候&#xff0c;发现调用QQ音乐轮播图的API一直失败&#xff0c;timeout真的不是我网络的问题&#xff0c;在客厅对着路由器调了一整天都是报错&#xff0c;我还以为是API失效了&#xff0c;但其实没有........晚上突然又可以获取了 但总不能不写轮播图吧&am…

MusicBee 歌词插件(基于QQ音乐API)

MusicBee 歌词插件&#xff08;基于QQ音乐API&#xff09; MusicBee 是一个很棒的免费音乐管理、播放软件&#xff0c;支持通过插件来扩展功能。然而 MusicBee 在初始情况下仅对外国的几个歌词数据库进行检索&#xff0c;得到的结果一般是不带时间轴的纯文本歌词&#xff0c;并…

php开发个人音乐站 QQ音乐api

做位一名优秀的程序员 工作时候戴耳机是不可避免的 然后好听的歌又需要会员 下面小编就给大家简绍我自己听歌的神器 话不多说 开撸&#xff01; 一&#xff0c;要想获得对应的歌曲肯定要先获得歌曲的id,图片id等 下面主要讲解如何获取歌曲播放id&#xff1b; 1.搜索歌曲API&a…

python调用QQ音乐API

python调用QQ音乐API 1. 音乐搜索接口、其他接口 2. 获取token 3. 拼接播放地址 先上一份代码&#xff1a; import requests import pprint import json from selenium import webdriver# 音乐搜索接口p, n, w 1, 5, 碰 url_1 https://c.y.qq.com/soso/fcgi-bin/client_…

php计算QQ音乐guid,QQ音乐API分析2017

官网提供API 说明&#xff1a;此API主要针对移动端直接调用QQ音乐API用&#xff0c;API只能在QQAPP内执行&#xff0c;上线时间尚短。 http://y.qq.com/m/api/api.html 自己分析的API 说明&#xff1a; 根据官网https://y.qq.com/分析的API&#xff0c;经过测试&#xff0c;可以…

java qq音乐接口 api,GitHub - yan123zi/qqMusicApi: qq音乐Api接口

qq音乐 API qq音乐 Node.js API service QQ音乐API koa2 版本, 通过Web网页版请求QQ音乐接口数据, 有问题请提 issue 当前代码仅共学习&#xff0c;不可做商业用途 API结构图 环境要求 因为本项目采用的是koa2, 所以请确保你的node版本是7.6.0 node -v &#x1f4e6; 安装 git…

QQ音乐API整理

最近准备用vue做个音乐播放器&#xff0c;网上找了找音乐API&#xff0c;看了一圈&#xff0c;还是QQ音乐最合适&#xff0c;这里做个整理 这篇博客已经过时了&#xff0c;下面的不用看了。。。。 歌曲搜索 接口地址 var num 3,name 王菲,urlString http://s.music.qq.co…

网易云音乐api、QQ音乐api、黑马电商api、小说api、漫画api接口

网易云音乐接口文档 基础访问地址&#xff08;api的跟地址&#xff09;&#xff1a;https://autumnfish.cn/ 接口文档地址&#xff1a;https://binaryify.github.io/NeteaseCloudMusicApi/ QQ音乐接口文档 基础访问地址&#xff08;api的跟地址&#xff09;&#xff1a;http…