例外が発生したときにを呼び出しpython -m pdb myapp.py
ています。通常は、問題を調査するために pdb インタープリターに戻されます。ただし、この例外は、呼び出してcurses.wrapper()
curses モードに入った後にスローされ、pdb インタープリターが役に立たなくなります。どうすればこれを回避できますか?
3 に答える
ジェームズの答えは良いです。私はそれに賛成しましたが、プログラムのロジック層とプレゼンテーション層を分割することも検討したいと思います。curses 部分をライブラリーの上に薄いレイヤーとして保持し、正しいルーチンを呼び出してエラーを再現する単純なドライバーを作成します。次に、飛び込んで必要なことを実行できます。
私が考えることができる別の方法はdebug
、通常の画面に戻って pdb を呼び出す関数または何かを作成することです。次に、例外を発生させるコードの直前に貼り付けて、プログラムを実行します。何かのようなもの
def debug(stdscr):
curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()
import pdb; pdb.set_trace()
どうやら、これはcurses.wrapper
関数で行われることと似ています。http://www.amk.ca/python/howto/curses/で簡単に言及されています。
Python に慣れていないので、これはまさにあなたが望むものではないかもしれません。しかしどうやら、winpdb はスクリプトにアタッチできます - gdb が実行中のプロセス (IIUC) にアタッチできるように。
http://winpdb.org/docs/launch-time/
名前に惑わされないでください。プラットフォームに依存しません。
ピクリューンを使う
vimでpyclewnを使用できます。またはpdb-cloneを使用します.pyclewnのコアであり、gdbのようにリモートデバッグできます