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
后,会出现如下交互模式:
代码一进入就执行到了第4行,其实这也很好理解,前面3行都是注释嘛,对代码的执行并没有实际作用,ipdb遇到注释语句会自动跳过的
接下来输入一个n,让那个代码继续执行一行:
可以看到返回的结果在动态的运行,多输入几次看看效果:
执行多次n后,程序按照预计的顺序执行
注意:执行到18行遇到print©,但是并没有立即返回结果,那是因为箭头位置是指将要执行这一行了,本次并不会执行,所有下一步才输出c的值579
注意:程序执行到第8行代码时,遇到定义函数,这时在执行下一行时,代码会跳过函数部分,直接来到13行
案例2: 使用exit或q
输入exit或q便会直接退出
案例3: p或pp
案例4: 使用!
由上图可知:想要修改变量需要在变量前面加一个!
案例5: 使用list或l
当遇到执行函数时,默认会在后台执行完函数并且指向下一行代码,但是按照我们的思维,当遇到执行函数时,需要返回头去看看函数时怎么运行的,想要看看代码在函数中时如何一步一步运行的,使用s即可: