摘要:在pycharm中经常需要代码调试来读懂程序,但是有时使用pycharm界面的调试按钮会遇到程序卡死在某一行而无法继续调试的情况。可以用pdb命令的方法进行调试。
1. 如何进入调试状态
在终端输入输入python命令时,在后面加上 -m pdb
,执行后便进入调试状态。
python -m pdb 脚本名.py
以我的代码为例,执行上面指令后会发现最下面一行以(Pdb)
开头,即进入调试状态了。
2. 调试操作
进入调试状态后,可以输入n
一行一行的执行代码,也可以通过break
命令设置断点位置,然后输入c
直接跳到断点处。
下面演示如何打断点进行调试
在上图我们可以看到输入c
后,->
指向config = vars(parase_args())
这一行,表示当前代码执行到该行(但改行还未执行),接着我们输入n
即可执行该行。
从下图可以看到执行完config = vars(parase_args())
这一行,我又输入p config
,出现一大堆参数。这里的p
指令即打印参数的意思,将config
里面的参数显示出来。
调试期间我们想观察哪一行代码的结果都可以用p指令来显示。
3. 关键指令
上面只是最基础的例子,要想实现更多需求,可以使用其他指令。
关于一些关键的pdb调试指令如下:
命令 | 缩写 | 说明 |
---|---|---|
break | b | 设置断点 |
continue | c | 继续执行至下一个断点 |
next | n | 执行下一行,如果下一行是子程序,不会进入子程序 |
step | s | 执行下一行,如果下一行是子程序,会进入子程序 |
p | - | 打印变量或表达式 |
clear | cl | 清除所有断点 |
disable | - | 禁用启用的断点 |
enable | - | 启用禁用的断点 |
where | bt\w | 打印堆栈轨迹 |
list | l | 根据参数值打印源码 |
up | u | 移动到上一堆栈 |
down | d | 移动到下一堆栈 |
restart | run | 重新开始调试 |
args | a | 打印函数参数 |
return | r | 执行到当前函数结束 |