和
python -m pdb -c "c" script.py
Run Code Online (Sandbox Code Playgroud)
当出现问题时,进入调试模式。从文档中,我发现该选项(Python 3.2+)可以让我每次在程序启动时-c "c"点击c + 。Enter
然而,当程序正常完成时,它会输出
The program finished and will be restarted,我仍然需要按q+Enter来退出程序。有没有办法也跳过这个?
-c您可以按顺序添加多个命令。
方法 1:仅在没有遇到错误时退出
如果没有遇到错误,您可以给出另一个命令q来跳出 pdb 模式。但是,如果遇到错误,它将进入调试模式,您必须继续点击c并输入才能继续。
python -mpdb -c "c" -c "q" script.py
Run Code Online (Sandbox Code Playgroud)
没有遇到错误(立即退出!)-
(base) $ python -mpdb -c "c" -c "q" script.py
The program finished and will be restarted
(base) $
Run Code Online (Sandbox Code Playgroud)
遇到错误(进入调试模式!)-
(base) $ python -mpdb -c "c" -c "q" script.py
Traceback (most recent call last):
File "/anaconda3/lib/python3.7/pdb.py", line 1701, in main
pdb._runscript(mainpyfile)
File "/anaconda3/lib/python3.7/pdb.py", line 1570, in _runscript
self.run(statement)
File "/anaconda3/lib/python3.7/bdb.py", line 585, in run
exec(cmd, globals, locals)
File "<string>", line 1, in <module>
File "/Projects/Random/script.py", line 6, in <module>
"""
ModuleNotFoundError: No module named 'thispackagedoesntexist'
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
Post mortem debugger finished. The script.py will be restarted
> /Projects/Random/script.py(6)<module>()
-> """
(Pdb)
Run Code Online (Sandbox Code Playgroud)
方法 2:无论是否出错都退出
您可以按以下方式使用echo "q"并将其传递给下一个 ( pdb) 命令。|这将运行第二个命令一次并立即获取echo "q"退出的输出 -
echo "q" | python -mpdb -c "c" script.py
Run Code Online (Sandbox Code Playgroud)
当程序在调试模式下运行完脚本后,这会命中 q 。调试在遇到(或未遇到)错误后自动退出。
没有遇到错误(立即退出!)-
(base) $ echo "q" | python -mpdb -c "c" script.py
The program finished and will be restarted
> /Projects/Random/script.py(6)<module>()
-> """
(Pdb) (base) $
Run Code Online (Sandbox Code Playgroud)
遇到错误(立即退出!)-
(base) $ echo "q" | python -mpdb -c "c" script.py
Traceback (most recent call last):
File "/anaconda3/lib/python3.7/pdb.py", line 1701, in main
pdb._runscript(mainpyfile)
File "/anaconda3/lib/python3.7/pdb.py", line 1570, in _runscript
self.run(statement)
File "/anaconda3/lib/python3.7/bdb.py", line 585, in run
exec(cmd, globals, locals)
File "<string>", line 1, in <module>
File /Projects/Random/script.py", line 6, in <module>
"""
ModuleNotFoundError: No module named 'thispackagedoesntexist'
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> /Projects/Random/script.py(6)<module>()
-> """
(Pdb) Post mortem debugger finished. The script.py will be restarted
> /Projects/Random/script.py(6)<module>()
-> """
(Pdb)
(base) $
Run Code Online (Sandbox Code Playgroud)
以下是可以与 pdb 一起使用的命令列表 -
(Pdb) help
Documented commands (type help <topic>):
========================================
EOF c d h list q rv undisplay
a cl debug help ll quit s unt
alias clear disable ignore longlist r source until
args commands display interact n restart step up
b condition down j next return tbreak w
break cont enable jump p retval u whatis
bt continue exit l pp run unalias where
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1029 次 |
| 最近记录: |