3

IPython では、%pdb有効にして Ctrl-C を押すと、プログラムを停止した正確な時点で Python デバッガー コンソールにドロップできます。

continueただし、この時点でプログラムは完全に停止しており、デバッガーで実行しても実行を再開できません。

IPython はそれを行うことができますか?完了したら、プログラムの実行を再開させてください。

注: については知ってpdb.set_trace()いますが、これは私が探しているものではありません。set_trace可能であれば、コードを手動で追加する代わりに、IPython を一時的に停止して無害なチェックを迅速に行う方法を探しています。

4

2 に答える 2

0
I can hit Ctrl-C and be dropped to a Python debugger console at the exact
point I stopped the program.

Ctrl-C はプログラムを中断しています。これは を発生させKeyboardInterrupt、再開するcontinueと続行します ...そして、送信した Ctrl-C によって要求されたとおりにプログラムを中断します。Ctrl-C は、特定の時点でプログラムをデバッグ モードで「一時停止」することではありません。

あなたが探しているのは、%run -dあなたができるように、特定の行にブレークポイントを設定することです。を参照してください%run?

于 2013-05-23T12:44:09.310 に答える
0

このタイプのものには多くのコーナーケースがあります。ただし、シグナル ハンドラーを usercustomize.py に追加すると、次のようになります。

cat >> $(python -m site --user-site)/usercustomize.py <<EOF
import signal, pdb
signal.signal(signal.SIGINT, lambda *args: pdb.set_trace())
EOF

Python を起動すると、そのシグナル ハンドラがインストールされます。

たとえば、SimpleHTTPServer を中断できるようになりました。

$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
^C--Return--
> [...].local/lib/python2.7/site-packages/usercustomize.py(3)<lambda>()>None
-> signal.signal(signal.SIGINT, lambda *args: pdb.set_trace())
(Pdb) locals()
{'__return__': None, 'args': (2, <frame object at 0x10245b238>), 'os': <module 'os' from '[...]/lib/python2.7/os.pyc'>}
于 2016-06-21T00:17:22.120 に答える