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
- 1. Używanie wibracji i AVCaptureSession w tym samym czasie
- 2. Yii Używanie Mongo DB i MySQL w tym samym czasie
- 3. Zanikanie i przesuwanie w tym samym czasie?
- 4. Używanie dwóch baz danych w tym samym czasie w kodekulacji
- 5. Wyświetlanie konsoli i debugera w tym samym czasie w IntelliJ
- 6. Wstawianie nadrzędnego i podrzędnego z NHibernate w tym samym czasie
- 7. Kilka żądań Ajax w tym samym czasie
- 8. W jaki sposób UPDATE i SELECT w tym samym czasie?
- 9. Aktywuj przycisk formularza i przycisku procesu w tym samym czasie?
- 10. Odtwarzaj i nagrywaj dźwięk w tym samym czasie
- 11. Rozciągliwy i wzór UIImage w tym samym czasie
- 12. Qt - Tworzenie splittera poziomego i pionowego w tym samym czasie
- 13. Przechwytywanie i wyświetlanie STDOUT w tym samym czasie
- 14. Zamrażanie wiersz 1 i kolumny A w tym samym czasie
- 15. Nagrywanie dźwięku i odtwarzanie iPoda w tym samym czasie?
- 16. Zadeklaruj i przypisz wiele zmiennych łańcuchowych w tym samym czasie.
- 17. Foldmethod = marker i składnia w tym samym czasie?
- 18. Czy mogę wybrać i aktualizować w tym samym czasie?
- 19. CSS3: Jak obracać i skalować obraz w tym samym czasie?
- 20. jQuery - obiekt i funkcja w tym samym czasie?
- 21. Jak zanikasz i animujesz w tym samym czasie?
- 22. Emacs kopiuje region/linię i komentuje w tym samym czasie
- 23. Używanie gestów i ruchów dotykiem Rozpoczęło się/Przeniesiono/Zakończono w tym samym czasie
- 24. Używanie Arquilliana i PowerMocka w tym samym teście JUnit
- 25. Jak uruchomić dwa moduły w tym samym czasie w IDLE
- 26. Jak złapać wiele wyjątków w tym samym czasie w Kotlin
- 27. Złap wiele wyjątków w tym samym czasie w VB.NET
- 28. przy użyciu zarówno setOnItemClickListener, jak i setOnItemLongClickListener, zarówno odbiornik uruchomiony w tym samym czasie lub działa w tym samym czasie.Why
- 29. Zapobieganie dwukrotnemu uruchomieniu procedury składowanej w tym samym czasie.
- 30. 2 różne żądanie php w tym samym czasie na użytkownika
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