python pdb调试基本命令整理
使用简介
启动调试
-
侵入式
在 py 文件内部设置:
import pdb; pdb.set_trace()
程序会在运行到这一行时停下来,进入 pdb 交互。
-
非侵入式
在运行 py 脚本时:
python -m pdb main.py
程序会在一启动时就进入 pdb 交互。
基本命令
简写(命令全称) | 功能 |
---|---|
h(elp) | 输出所有命令帮助 |
h(elp) command | 输出指定命令的帮助 |
q(uit) | 退出 |
查看相关命令
简写(命令全称) | 功能 |
---|---|
p(rint) expr | 打印表达式的值 |
pp(rint) expr | pretty 打印表达式的值 |
w(here) | 打印当前位置(包括stack trace) |
l(ist) | 打印当前行的附近11行 |
l(ist) fisrt, last | 从行号 fisrt 打印到行号 list |
a(rgs) | 打印当前函数的参数 |
移动相关命令
简写(命令全称) | 功能 |
---|---|
<ENTER> | 重复上一条命令 |
n(ext) | 执行当前语句(step over) |
s(tep) | 执行并进入函数 |
r(eturn) | 继续执行直到当前函数返回 |
c(ontinue) | 继续执行直到下一个断点 |
u§ | 移动到stack trace的上一层 |
d(own) | 移动到stack trace的下一层 |
断点相关命令
简写(命令全称) | 功能 |
---|---|
b(reak) | 显示所有断点 |
b(reak) lineno | 在 lineno 设置断点 |
b(reak) func | 在 func 函数的第一行设置断点 |
其他
简写(命令全称) | 功能 |
---|---|
!stmt | 执行 python 语句 stmt (而非当做pdb命令) |