Ich rufe python -m pdb myapp.py
, wenn eine Ausnahme ausgelöst wird, und ich würde normalerweise zurück zum pdb-Interpreter geworfen werden, um das Problem zu untersuchen. Diese Exception wird jedoch ausgelöst, nachdem ich curses.wrapper()
aufgerufen und in den Cursurs-Modus gewechselt habe, was den PDB-Interpreter nutzlos gemacht hat. Wie kann ich das umgehen?Debugger verwenden und gleichzeitig fluchen?
Antwort
James 'Antwort ist eine gute und ich habe es aufgewertet, aber ich würde auch in Betracht ziehen, die Logik und Präsentation Schichten meines Programms zu teilen. Halten Sie den Fluch Teil einer dünnen Schicht über einer Bibliothek und schreiben Sie einen einfachen Treiber, der die richtigen Routinen aufruft, um den Fehler neu zu erstellen. Dann kannst du eintauchen und tun, was nötig ist.
Eine andere Möglichkeit, die ich mir vorstellen kann, ist eine Funktion namens debug
oder etwas, das Sie zurück in den regulären Bildschirm wirft und ruft pdb. Dann kleben Sie es kurz vor dem Code, der die Ausnahme auslöst und führen Sie Ihr Programm aus. So etwas wie
def debug(stdscr):
curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()
import pdb; pdb.set_trace()
Offenbar ist dies ähnlich dem, was mit der curses.wrapper
Funktion erfolgt. Es wird kurz unter http://www.amk.ca/python/howto/curses/ erwähnt.
Ein kluger Vorschlag, um die Curses-Logik getrennt zu halten, und danke für den 'curses.wrapper'-Zeiger. –
Gern geschehen. –
Wenn Sie Python nicht kennen, ist dies möglicherweise nicht genau das, was Sie wollen. Aber anscheinend kann winpdb an ein Skript anhängen - genau wie gdb an einen laufenden Prozess (IIUC).
http://winpdb.org/docs/launch-time/
Sie durch den Namen nicht täuschen, ist es plattformunabhängig.
Guter Vorschlag. Du hast mich dazu geschlagen. Es wäre der richtige Weg, um dieses Problem zu lösen. Auch nützlich für GUIs und Daemon-Prozesse. –
Ich hatte alles vergessen! –
Ich nehme nicht an, dass es möglich ist, mit der PDB der Core-Bibliothek zu verbinden? –
Verwendung pyclewn
Sie pyclewn mit vim verwenden können. oder PDB-Klon, den Kern der pyclewn seine gut, es ist wie gdb,
- 1. Konsole und Debugger gleichzeitig in IntelliJ anzeigen
- 2. Subversion und SourceSafe gleichzeitig verwenden?
- 3. Verwendung der Terminal-Farbpalette mit Fluchen
- 4. Kann ich Utensilien gleichzeitig verwenden und erweitern?
- 5. Verwenden Sie better_errors als Debugger?
- 6. Starten Sie den Python-Debugger und führen Sie gleichzeitig das Modul als Skript aus
- 7. Mungo - findOne mehrmals gleichzeitig verwenden
- 8. Kann ich UIPageViewControllers gleichzeitig verwenden?
- 9. Eclipse Debugger und Sammlungen
- 10. Welcher Editor und Debugger für Typoskript
- 11. Wie kann ich die Webkonsole und den Debugger gleichzeitig in Firefox öffnen?
- 12. Verwenden Sie gleichzeitig Wifi und 3G-Schnittstelle auf Android?
- 13. Wie jQuery Validator und AJAX-Anfrage gleichzeitig verwenden?
- 14. Res.Render verwenden und gleichzeitig über eine JSON-Datei senden
- 15. Kann ich die Befehlszeilenwerkzeuge Git und TortoiseGit gleichzeitig verwenden?
- 16. JPA - Klasse als Entität verwenden und gleichzeitig einbetten?
- 17. Ich kann ActionListener und KeyListener nicht gleichzeitig verwenden
- 18. Kann ich Nginx als Server und Proxy gleichzeitig verwenden?
- 19. Raspberry Pi - wie I2C und GPIO gleichzeitig zu verwenden?
- 20. Wie verwenden Sie einen Debugger für Linux
- 21. Wie verwenden Sie den Android-Debugger?
- 22. nodejs mehrere Debugger-Clients
- 23. fadeOut() und slideUp() gleichzeitig?
- 24. Mit AVAudioPlayer und MPMoviePlayerController gleichzeitig
- 25. Array-Filter und Karte gleichzeitig?
- 26. Mehrere Frontend-Paketmanager gleichzeitig verwenden (Bower, NuGet)
- 27. VS2008 Debugger und kernel32.dll
- 28. Python Logging und Pydev Debugger?
- 29. IE 8 und Javascript Debugger
- 30. Socket lesen und schreiben gleichzeitig
Remote-debuggen kann ich es denke infomation http://wiki.python.org/moin/PythonDebuggers nützlich sein könnten –
ich ein Lachen bekam im Titel davon. Ja, Debugging und Fluchen scheinen in meinem Kopf zusammen zu gehen. – HLGEM