如果很简单的程序,建议还是pirnt打出来。
对于Linux环境,使用pdb/ipdb是一个不错的选择。
安装ipdb
sudo pip install ipdb
开启调试
- 手动在需要调试的地方写入set_trace()
import ipdb
ipdb.set_trace()
2.使用命令启动
python -m ipdb fileNme.py
功能简介
断点
- 设置 b lineNumber
- 查看 b
- 删除 cl [breakpoint Number]
- *条件断点 condition bpnumber [condition]
- *停用 disable bpNumber
- *激活 enable bpNumber
执行
- 执行(逐语句) s
- 执行(逐过程) n
- 执行当前运行函数到结束(跳出) r
- 继续,直到下个断点 c
- 跳到指定行j lineNumber
查看
- 查看变量 p varsName
- 查看当前函数参数 a
- 列出当前源码附近 l
- 列出lineNumber附近源码 l lineNumber
- 查看所有代码 l lineNumber
调用栈
- 查看当前栈 w
- 进入下一层堆栈 d
- 跳到上一层堆栈 u
其他
- 退出 q
- 重新运行 run
- 执行命令 !command 可以动态更改程序中的变量
- 执行上条 enter
实际使用
ZeroDivisionError: division by zero
# 执行命令
python -m ipdb login.py
- 设置断点在第四行
b 4
- 运行
r
单步调试
n # 执行打印命令
n # 执行b -= 10
p b # 查看b变量内容
s # 进入func2继续调试
- 发现错误更改后
disable 1 # 失效断点
run # 重新载入程序
r # 执行
cl # 程序正常,去除断点