2010-02-07 28 views
9

Zadzwonię pod python -m pdb myapp.py, gdy wystrzeli wyjątek, a ja zwykle będę wracał do tłumacza pdb, aby zbadać problem. Jednak ten wyjątek jest generowany po tym, jak zadzwoniłem przez curses.wrapper() i wszedłem w tryb przekleństw, czyniąc interpretera pdb bezużytecznym. Jak mogę obejść ten problem?Używanie debuggera i curses w tym samym czasie?

+0

myślę, że może być użyteczne http://wiki.python.org/moin/PythonDebuggers infomation –

+13

mam się śmiać pod tytułem tego. Tak, debugowanie i przeklinanie wydają się pasować do moich myśli. – HLGEM

Odpowiedz

8

Odpowiedź Jamesa jest dobra i przegłosowałem ją, ale rozważę również podzielenie logiki i warstw prezentacji mojego programu. Zachowaj klątwy na części cienkiej warstwy na górze biblioteki i napisz prosty sterownik, który wywoła prawidłowe procedury, aby odtworzyć błąd. Wtedy możesz zanurkować i zrobić to, co konieczne.

Innym sposobem, jaki mogę wymyślić, jest utworzenie funkcji o nazwie debug lub czegoś, co spowoduje powrót do zwykłego ekranu i wywoła pdb. Następnie przyklej go tuż przed kodem, który podnosi wyjątek i uruchom program. Coś jak

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

Najwyraźniej jest to podobne do tego, co odbywa się za pomocą funkcji curses.wrapper. Jest krótko wspomniany pod adresem http://www.amk.ca/python/howto/curses/.

+0

Mądra sugestia, aby zachować oddzieloną logikę klątw i dzięki za wskaźnik 'curses.wrapper'. –

+0

Nie ma za co. –

7

Brak znajomości języka Python może nie być dokładnie taki, jak chcesz. Ale najwyraźniej winpdb może dołączyć do skryptu - podobnie jak gdb do działającego procesu (IIUC).

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

Nie daj się wprowadzić w błąd przez nazwę, jest niezależna od platformy.

+1

Dobra sugestia. Uderzyłeś mnie w to. Byłby to właściwy sposób rozwiązania tego problemu. Przydatny również dla GUI i procesów demonów. –

+0

Zapomniałem o tym wszystkim! –

+0

Nie sądzę, że można dołączyć za pomocą pdb biblioteki głównej? –

0

użycie pyclewn

można użyć pyclewn z vim. lub użyj pdb-clone, rdzeń pyclewn jego dobra, jak jej gdb, można zdalnego debugowania

Powiązane problemy