如何让Python pdb在脚本执行完成后自动关闭而非重启
问题描述
以下是myfile.py的代码:
print('1st line') print('2nd line') print('3rd Line') print('4th Line') print('5th Line')
使用的pdb启动命令:
python3 -mpdb -c "b 2" -c c myfile.py
执行命令后的输出:
Breakpoint 1 at /Users/rahulbadenkal/Desktop/Personal/python-in-a-box/myfile.py:2 1st line > /Users/rahulbadenkal/Desktop/Personal/python-in-a-box/myfile.py(2)<module>() -> print('2nd line') (Pdb)
在pdb提示符输入c后的输出:
Breakpoint 1 at /Users/rahulbadenkal/Desktop/Personal/python-in-a-box/myfile.py:2 1st line > /Users/rahulbadenkal/Desktop/Personal/python-in-a-box/myfile.py(2)<module>() -> print('2nd line') (Pdb) c 2nd line 3rd Line 4th Line 5th Line The program finished and will be restarted > /Users/rahulbadenkal/Desktop/Personal/python-in-a-box/myfile.py(1)<module>() -> print('1st line') (Pdb)
脚本执行完成后调试会话会自动重启。由于是程序化传递命令,无法手动输入q关闭会话,请问能否在初始命令中设置让pdb在脚本完成后自动关闭会话而非重启?
解决方案
可以通过设置pdb的quitonexit选项为on,让调试会话在脚本执行完毕后自动退出,无需手动输入q。修改后的完整启动命令如下:
python3 -mpdb -c "set quitonexit on" -c "b 2" -c "c" myfile.py
各参数的作用:
set quitonexit on:配置pdb在脚本正常执行完成后直接退出会话,不再触发自动重启b 2:在脚本第2行设置断点c:启动脚本执行,直到遇到断点或脚本结束
执行该命令后,当你在断点处输入c继续执行,脚本跑完后会直接退出pdb,不会出现自动重启的情况。
如果需要全程自动化(无需手动输入c),可以将所有命令合并到一个-c参数中,用分号分隔:
python3 -mpdb -c "set quitonexit on; b 2; c" myfile.py
此命令会自动完成参数配置、断点设置、脚本执行三个步骤,脚本结束后直接退出pdb会话。
内容的提问来源于stack exchange,提问作者Rahul R Badenkal
相关产品推荐
相关产品推荐

