10

例外が発生したときにを呼び出しpython -m pdb myapp.pyています。通常は、問題を調査するために pdb インタープリターに戻されます。ただし、この例外は、呼び出してcurses.wrapper()curses モードに入った後にスローされ、pdb インタープリターが役に立たなくなります。どうすればこれを回避できますか?

4

3 に答える 3

10

ジェームズの答えは良いです。私はそれに賛成しましたが、プログラムのロジック層とプレゼンテーション層を分割することも検討したいと思います。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/で簡単に言及されています。

于 2010-06-01T11:44:34.433 に答える
7

Python に慣れていないので、これはまさにあなたが望むものではないかもしれません。しかしどうやら、winpdb はスクリプトにアタッチできます - gdb が実行中のプロセス (IIUC) にアタッチできるように。

http://winpdb.org/docs/launch-time/

名前に惑わされないでください。プラットフォームに依存しません。

于 2010-04-13T23:48:05.300 に答える
0

ピクリューンを使う

vimでpyclewnを使用できます。またはpdb-cloneを使用します.pyclewnのコアであり、gdbのようにリモートデバッグできます

于 2016-04-21T05:57:40.447 に答える