ipdb,调试你的python程序
文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。
ipdb,在调试你的python程序
使用Spyder时,默认的调试方式是使用ipdb
,ipdb
是pdb
的增强版,提供了补全、语法高亮等补充内容。本文提供了ipdb
的常用参数速查,并在后文中也给出了pdb
的常用参数速查。两者大体相同。
1 ipdb
1.1 使用
- 在代码内使用
ipdb
1 | import ipdb |
但这种方式会破坏原有代码。
- 在代码外部使用
ipdb
。- 注意,由于本文目的是使用
Spyder
下的ipdb
,如果不想单独安装ipdb
,可以通过自带的pdb
完成下述命令测试。
- 注意,由于本文目的是使用
1 | python -m ipdb <file.py> |
1.2 常用命令
<ENTER>
- 重复上次命令
p(rint)
- 打印某个变量
c(ontinue)
- 继续
b(reak)
- 打断点
cl(ear)
- 清除断点
n(ext)
- 让程序运行下一行,如果当前语句有一个函数调用,不会进入被调用的函数体中
s(tep)
- 跟
n
相似,但是如果当前有一个函数调用,那么s
会进入被调用的函数体中
- 跟
l(ist)
- 显示当前行的上下文
r(eturn)
- 运行直到子程序结束
!<python 命令>
h(elp)
- 帮助
a(rgs)
- 打印当前函数的参数
j(ump)
- 让程序跳转到指定的行数
l(ist)
- 可以列出当前将要运行的代码块
q(uit)
- 退出调试
1.3 调试中的帮助
调试时,使用 h
,可以查看所有命令。
1 | ipdb> h |
使用 h <cmd>
可以查看具体命令的使用。
1 | ipdb> h p |
2 pdb
pdb
的命令集:https://docs.python.org/3/library/pdb.html
出处:https://github.com/nblock/pdb-cheatsheet
2.1 Getting started
start pdb
from within a script:
1 | import pdb |
start pdb
from the commandline:
1 | python -m pdb <file.py> |
2.2 Basics
h(elp)
print available commandsh(elp)
command print help about commandq(quit)
quit debugger
2.3 Examine
p(rint)
expr print the value of exprpp expr
pretty-print the value of exprw(here)
print current position (including stack trace)l(ist)
list 11 lines of code around the current linel(ist)
first, last list from first to last line numbera(rgs)
print the args of the current function
2.4 Movement
<ENTER>
repeat the last commandn(ext)
execute the current statement (step over)s(tep)
execute and step into functionr(eturn)
continue execution until the current function returnsc(ontinue)
continue execution until a breakpoint is encounteredu(p)
move one level up in the stack traced(own)
move one level down in the stack trace
2.5 Breakpoints
b(reak)
show all breakpointsb(reak)
lineno set a breakpoint at linenob(reak)
func set a breakpoint at the first line of a func
2.6 Manipulation
!stmt
treat stmt as a Python statement instead of a pdb command
都看到这儿了,不如关注每日推送的“科文路”、互动起来~
至少点个赞再走吧~
ipdb,调试你的python程序