如何正确使用pdb,确保先应用断点再执行代码
解决PDB先完整执行代码再触发断点的问题
问题场景
当前.pdbrc配置:
b 2 c
目标脚本code.py代码:
print('1st line') print('2nd line') print('3rd line')
执行python3 -m pdb code.py后,脚本会先完整执行一遍,再添加断点并重新执行到断点处,输出不符合预期。我们需要实现先设置断点,再开始执行代码,直接停在第2行,得到如下期望输出:
Breakpoint 1 at /Users/mypc/code.py:2 1st line > /Users/mypc/code.py(2)<module>() -> print('2nd line') (Pdb)
解决方法
方法1:启动时通过-c参数指定前置命令
直接在启动PDB时用-c参数传入断点和继续命令,让PDB先执行这些命令再启动脚本:
python3 -m pdb -c "b 2" -c "c" code.py
这种方式跳过了默认的模块导入执行流程,直接先设置断点再启动脚本执行,符合预期。
方法2:修改.pdbrc使用run命令替代c
将.pdbrc内容修改为:
b 2 run
原来的c命令是让PDB继续执行已经启动的模块导入过程(此时脚本顶层代码已经在运行),而run命令会重新启动脚本的执行流程,此时断点已提前设置好,启动后会直接执行到断点处,不会先跑完整脚本。
内容的提问来源于stack exchange,提问作者Rahul R Badenkal
相关产品推荐
相关产品推荐

