python ipdb 调试代码

article/2025/3/4 16:38:39

python ipdb 调试代码

安装

pip install ipdb

使用

第一种方法

python -m ipdb xxx.py #单步调试

也可以写一个.py文件,如下,来执行。

import os
os.system('python -m ipdb xxx.py')

第二种方法

在需要断点的地方插入两句话

from ipdb import set_trace
set_trace()

运行程序后, 会在执行到set_trace()的时候中断程序 并出现提示符
ipdb>
好像进入了 ipython 一样

常用的命令

命令                       说明
next或n                   执行下一行
exit或q                   终止程序并退出
p或pp                     打印变量
!                         修改变量
list或l                   查看当前程序代码
break或b                  设置断点
continue或c               继续执行程序直到遇到断点
step或s                   进入函数
return或r                 在函数中使用,执行代码直到遇到断点或者函数结束
help                      帮助

举例

代码

import time
import math
def get_p_time():present_time = time.asctime()return present_time
a = 123
b = 456
c = a + b
print(c)
present_time = get_p_time()
print(present_time)

案例1: 使用n

在命令输入 python -m ipdb xxx.py 后,会出现如下交互模式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8I7UsbvS-1572926584720)(C:\Users\xiahuadong\Pictures\博客\97.png)]
代码一进入就执行到了第4行,其实这也很好理解,前面3行都是注释嘛,对代码的执行并没有实际作用,ipdb遇到注释语句会自动跳过的
接下来输入一个n,让那个代码继续执行一行:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwtmfNdU-1572926584722)(C:\Users\xiahuadong\Pictures\博客\98.png)]
可以看到返回的结果在动态的运行,多输入几次看看效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82uMMUJJ-1572926584722)(C:\Users\xiahuadong\Pictures\博客\99.png)]
执行多次n后,程序按照预计的顺序执行
注意:执行到18行遇到print©,但是并没有立即返回结果,那是因为箭头位置是指将要执行这一行了,本次并不会执行,所有下一步才输出c的值579
注意:程序执行到第8行代码时,遇到定义函数,这时在执行下一行时,代码会跳过函数部分,直接来到13行

案例2: 使用exit或q

输入exit或q便会直接退出

案例3: p或pp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1J21rgVy-1572926584722)(C:\Users\xiahuadong\Pictures\博客\100.png)]

案例4: 使用!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q1hKxIGV-1572926584722)(C:\Users\xiahuadong\Pictures\博客\101.png)]
由上图可知:想要修改变量需要在变量前面加一个!

案例5: 使用list或l

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LKor5Rg4-1572926584723)(C:\Users\xiahuadong\Pictures\博客\102.png)]
当遇到执行函数时,默认会在后台执行完函数并且指向下一行代码,但是按照我们的思维,当遇到执行函数时,需要返回头去看看函数时怎么运行的,想要看看代码在函数中时如何一步一步运行的,使用s即可:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KVGkYU3X-1572926584724)(C:\Users\xiahuadong\Pictures\博客\103.png)]


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

相关文章

python debug ipdb

pudb使用 to be continued… ipdb和pdb区别 实际上ipdb是pdb的扩展版本,在pdb的基础上添加了如下功能: 可以使用tab(提示)补全代码的功能(我觉得这一点上我就完全倒戈了…)调试不再是黑白的&#xff0c…

Python调试pdb和ipdb

什么是pdb和ipdb 不知道大家在用Python写代码出现报错时是怎样调试的,从报错提示定位回去一步一步check每一行?如果没有IDE或者命令行写代码时又该怎样快速调试?这时如果使用pdb进行调试将会异常方便。 Pdb就是Python debugger,…

python调试模块ipdb

1. 调试python ipdb是用来python中用以交互式debug的模块,可以直接利用pip安装; 其功能类似于pycharm中 python控制台, 而使用ipdb 的优点,便是直接在代码中调试, 避免了在python控制台,或者重新设置一些简单变量。…

python调试器 ipdb

文章目录 1. 介绍1.1 常用调试方式1.2 安装 ipdb 2. 用法3. 命令3.1、查看源代码3.2、添加断点3.3 添加临时断点3.4 清除断点3.5、打印变量值3.6、逐行调试命令3.7、非逐行调试命令3.8 跳出函数,跳入函数3.9、查看当前函数所有参数3.10 打印变量的值3.11、打印变量类…

ipdb python下的debug利器

ipdb是一个IPython的python下debug神器,支持在代码中添加断点,进行单步调试,支持在调试过程中查看各种变量的值,新增修改断点,或跳过特定断点。以往进行python代码的调试都是通过pycharm或vscode添加断点,在…

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…