ipdb 之于 pdb,就像 ipython 之于 python,实现的功能相同,但 ipdb 具有语法高亮、 tab 补全、更友好的堆栈信息等优势。
pdb 是 Python 的标准库,无需安装直接使用,ipdb 为第三方库,需要使用 pip 安装后使用。
----------------------------------------------------------
pdb调试是需要在源程序里添加一句
pdb.set_trace()
就相当于是在这个位置打一个断点
import pdb a = "a string" b= "b string" pdb.set_trace() print("next step")
运行之后
之后就有点像gdb的操作了
-> 指的是下一行要执行的语句
也可以
python -m ipdb filename.py
pdb常用命令
- q 退出
- enter 重复上一个命令
- 设置断点 b后面跟行号
b后什么都不跟是显示现有的断点
- 取消断点 clear 断点标号
注意不是断点行号,是标号,断点标号可以用b命令查看
- j 跳转到指定行
j 10 #运行到地10行,jump的首字母- 只用 b 后面不跟行号就是列出当前所有断点,及其状态
l显示代码
当用l显示了附近代码之后,再用l的话,就会显示下面一段的代码了,而我们当前附近的代码就看不到了,怎么办呢
就可以指定行号显示
l 10,20
显示10-20行的代码
返回上层堆栈的操作
w:(where)打印当前执行堆栈 d:(down)执行跳转到在当前堆栈的深一层(个人没觉得有什么用处) u:(up)执行跳转到当前堆栈的上一层
up和down只能够查看堆栈的上下层信息,但是并不会改变程序执行的位置,程序执行到哪里了并不会改变, 再执行next的时候仍然会在原来那个位置往下执行
执行w是会这样,当前在那个堆栈会有箭头指向
python调试debug—pdb(ipdb)
于 2020-02-26 22:21:41 首次发布