Frage

Ich rufe python -m pdb myapp.py, wenn eine Ausnahme ausgelöst, und ich würde normalerweise zurück in die PDB-Interpreter geworfen werden, um das Problem zu untersuchen. Doch diese Ausnahme ausgelöst wird, nachdem ich durch curses.wrapper() und trat Flüche Modus aufgerufen haben, wodurch die PDB-Interpreter nutzlos. Wie kann ich dieses Problem umgehen?

War es hilfreich?

Lösung

James` Antwort ist ein gut und ich habe es upvoted aber ich würde auch prüfen, versuchen, die Logik und Präsentationsschichten meines Programms zu teilen. Halten Sie die Flüche Teil eine dünne Schicht auf eine Bibliothek und schreibt einen einfachen Treiber, der die richtigen Routinen aufruft, um den Fehler zu reproduzieren. Dann können Sie in und tun tauchen, was notwendig ist.

Eine andere Möglichkeit, ich denken kann, ist eine Funktion namens debug oder etwas zu schaffen, dass Sie wieder in den normalen Bildschirm wirft und ruft pdb. Dann kleben Sie es kurz vor dem Code, der die Ausnahme auslöst und das Programm auszuführen. So etwas wie

def debug(stdscr):
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()
    import pdb; pdb.set_trace()

Offensichtlich ist dies ähnlich zu dem, was mit der curses.wrapper Funktion erfolgt. Es wird kurz erwähnt unter http://www.amk.ca/python/howto/curses/.

Andere Tipps

Nicht mit Python vertraut zu sein, ist dies nicht genau sein kann, was Sie wollen. Aber anscheinend kann Winpdb an ein Skript anhängen - wie kann GDB an einen laufenden Prozess (IIUC).

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

Sie durch den Namen nicht täuschen, ist es plattformunabhängig.

verwenden pyclewn

Sie verwenden können pyclewn mit vim. oder verwenden PDB-Klon, den Kern der pyclewn seine gut, es ist wie gdb, können Remote-debug

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top