私はPythonスクリプトを使用してエラーを検査したい:
$ python3 -m pdb my_script.py
これにより、pdbプロンプトが表示され、c
で実行を続行できます。エラーが発生した場合は、変数を検査し、q
でスクリプトの実行を終了してシェルに戻ります。 。
私はiPythonデバッガーモジュールでも同じように試しました。
$ python3 -m ipdb my_script.py
ただし、エラーの検査が完了したら、デバッガーを終了することはできません。 q
quitコマンドを使用すると、スクリプトの再実行モードと事後モードの間で切り替えが行われます。
$ python3 -m ipdb my_script.py
ipdb> c
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
ipdb> Inspect some variables at this point
ipdb> q
Post mortem debugger finished. The my_script.py will be restarted
ipdb> q
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
ipdb> q
Post mortem debugger finished. The my_script.py will be restarted
ipdb> q
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
ipdb> q
Post mortem debugger finished. The my_script.py will be restarted
ipdb> q
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
このデバッガを終了する方法は?
これはIPython 5.1のバグでした。 このプルリクエスト で修正され、IPython 5.2以降の問題ではなくなりました。 q
、quit()
、または Ctrl+d デバッガーを終了します。
ユーザー@ffeastがコメントしたように、 open ipdb issue があり、いくつかの回避策が提案されています。私にとってこれらはうまくいきました:
kill %1
_(またはジョブ番号が何であれ)ipdb> import os; os._exit(1)
使用する ctrl+z または、2番目のターミナルを開いて、プロセスを探します(ps -ax | grep python
)およびプロセスを強制終了します。
ステップバイステップ:
ターミナルへのアクセスを取得します。
ssh server
(オプションBまたはCを使用するため、2番目の接続を開いてコマンドを実行できます)対応するpython PID
プロセスのps -ax | grep python
。たとえば、私のプロセスのプロセスID(python my_stucked_process.py
) だろう 112923
:
3085 tty1 Sl+ 15:53 /usr/bin/python /usr/bin/x-terminal-emulator
112923 pts/2 Tl 0:01 python my_stucked_process.py
113118 pts/2 S+ 0:00 grep --color=auto python
kill -9 112923
@tutuDajujuの使用を提案 ctrl+z しかし、彼らの提案はプロセスをバックグラウンドに送信するだけです(メモリを消費して存在します)。あなたは本当にプロセスを殺すために上記を行う必要があります