脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python调试模块ipdb详解

python调试模块ipdb详解

2023-03-17 14:08mingqian_chu Python

ipdb是用来python中用以交互式debug的模块,可以直接利用pip安装,这篇文章主要介绍了python调试模块ipdb详解,需要的朋友可以参考下

1. 调试python

ipdb是用来python中用以交互式debug的模块,可以直接利用pip安装;

其功能类似于pycharm中 python控制台,
而使用ipdb 的优点,便是直接在代码中调试,
避免了在python控制台,或者重新设置一些简单变量。

python调试模块ipdb详解

?
1
pip install ipdb

1.1 使用ipdb

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

?
1
2
3
for i in range(5):
    print(i)
    ipdb.set_trace()

1.2 常用命令

n→ \to→next
ENTER→ \to→重复上次命令
q→ \to→退出
p<变量>→ \to→打印变量
c→ \to→继续
l→ \to→查找当前位于哪里
s→ \to→进入子程序
r→ \to→运行直到子程序结束
————————————————

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
命令式
上面的方法很方便,但是也有不灵活的缺点。对于一段比较棘手的代码,我们可能需要按步执行,边运行边跟踪代码流并进行调试,这时候使用交互式的命令式调试方法更加有效。启动IPDB调试环境的方法也很简单:
 
python -m ipdb your_code.py
常用命令
IPDB调试环境提供的常见命令有:
 
帮助
使用h即可调出IPDB的帮助。可以使用help command的方法查询特定命令的具体用法。
 
下一条语句
使用n(next)执行下一条语句。注意一个函数调用也是一个语句。如何能够实现类似“进入函数内部”的功能呢?
 
进入函数内部
使用s(step into)进入函数调用的内部。
 
打断点
使用b line_number(break)的方式给指定的行号位置加上断点。使用b file_name:line_number的方法给指定的文件(还没执行到的代码可能在外部文件中)中指定行号位置打上断点。
 
另外,打断点还支持指定条件下进入,可以查询帮助文档。
 
一直执行直到遇到下一个断点
使用c(continue)执行代码直到遇到某个断点或程序执行完毕。
 
一直执行直到返回
使用r(return)执行代码直到当前所在的这个函数返回。
 
跳过某段代码
使用j line_number(jump)可以跳过某段代码,直接执行指定行号所在的代码。
 
更多上下文
在IPDB调试环境中,默认只显示当前执行的代码行,以及其上下各一行的代码。如果想要看到更多的上下文代码,可以使用l first[, second](list)命令。
 
其中first指示向上最多显示的行号,second指示向下最多显示的行号(可以省略)。当second小于first时,second指的是从first开始的向下的行数(相对值vs绝对值)。
 
根据SO上的这个问题,你还可以修改IPDB的源码,一劳永逸地改变上下文的行数。
 
我在哪里
调试兴起,可能你会忘了自己目前所在的行号。例如在打印了若干变量值后,屏幕完全被这些值占据。使用w或者where可以打印出目前所在的行号位置以及上下文信息。
 
这是啥
我们可以使用whatis variable_name的方法,查看变量的类别(感觉有点鸡肋,用type也可以办到)。
 
列出当前函数的全部参数
当你身处一个函数内部的时候,可以使用a(argument)打印出传入函数的所有参数的值。
 
打印
使用p(print)和pp(pretty print)可以打印表达式的值。
 
清除断点
使用cl或者clear file:line_number清除断点。如果没有参数,则清除所有断点。
 
再来一次
使用restart重新启动调试器,断点等信息都会保留。restart实际是run的别名,使用run args的方式传入参数。
 
退出
使用q退出调试,并清除所有信息。
 
当然,这并不是IPDB的全部。其他的命令还请参照帮助文档。文档在手,天下我有!

 

到此这篇关于python调试模块ipdb详解的文章就介绍到这了,更多相关python调试ipdb内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/chumingqian/article/details/129464323

延伸 · 阅读

精彩推荐
  • PythonPython绘图示例程序中的几个语法糖果你知道吗

    Python绘图示例程序中的几个语法糖果你知道吗

    这篇文章主要为大家详细介绍了Python绘图示例程序中的几个语法糖果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一...

    卓晴6522022-09-21
  • PythonPython视频处理模块之moviepy的用法教程

    Python视频处理模块之moviepy的用法教程

    随着自媒体时代,现在对视频的处理变得越来越常见。而 Python 有一个专门用于处理视频的第三方库:moviepy,可以非常方便地对视频进行一些简单处理,下...

    古明地觉4082022-07-21
  • Pythonpython处理变量交换与字符串及判断的小妙招

    python处理变量交换与字符串及判断的小妙招

    本文记录一些 Python 日常编程中的小妙招,并使用 IPython 进行交互测试,让我们更好的了解和学习 Python 的一些特性,对大家的学习或工作具有一定的价值,...

    忆想不到的晖11232022-01-17
  • Pythonpython 实现对文件夹内的文件排序编号

    python 实现对文件夹内的文件排序编号

    下面小编就为大家分享一篇python 实现对文件夹内的文件排序编号,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Interstellar-ai8362021-01-31
  • Python浅谈python中set使用

    浅谈python中set使用

    下面小编就为大家带来一篇浅谈python中set使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Python教程网2202020-08-30
  • PythonPyhton模块和包相关知识总结

    Pyhton模块和包相关知识总结

    文中详细整理了关于Python模块和包的相关知识点,刚入门Python的小伙伴们可以学习一下,有助于加深Python基础的理解.而且有详细说明及代码示例,需要的朋友可...

    ʚVVcatɞ8922021-10-29
  • Python两个框架的故事:pytorch与tensorflow

    两个框架的故事:pytorch与tensorflow

    本文旨在通过专注于创建和训练两个简单模型的基础知识来说明Pytorch和Tensorflow之间的差异。...

    今日头条7972021-03-19
  • PythonPython聊天室实例程序分享

    Python聊天室实例程序分享

    这篇文章主要为大家分享了Python Socket编程之聊天室示例程序代码,感兴趣的小伙伴们可以参考一下 ...

    hazir2772020-08-05