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?
Odpowiedz
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/.
Mądra sugestia, aby zachować oddzieloną logikę klątw i dzięki za wskaźnik 'curses.wrapper'. –
Nie ma za co. –
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.
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. –
Zapomniałem o tym wszystkim! –
Nie sądzę, że można dołączyć za pomocą pdb biblioteki głównej? –
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
myślę, że może być użyteczne http://wiki.python.org/moin/PythonDebuggers infomation –
mam się śmiać pod tytułem tego. Tak, debugowanie i przeklinanie wydają się pasować do moich myśli. – HLGEM