Ich benutze ipdb ziemlich oft in einer Weise, nur zu einem Stück Code, der ist isoliert isoliert, d. H. Es ist schwer zu schreiben ein echtes Skript, das es verwendet. Stattdessen schreibe ich einen minimalen Testfall mit Spott und spring hinein.Beenden Python Debugger ipdb
Beispiele für den Workflow:
def func():
...
import ipdb
ipdb.set_trace()
...
def test_case():
...
func()
...
Dann rufen
py.test test_file.py -s -k test_case
Jetzt, in der Regel nur eine Variable oder zwei, die ich überprüfen, und wollen dann beenden. Ändern Sie den Code und wiederholen Sie den Vorgang.
Wie kann ich aufhören? Das Handbuch sagt q
beendet den Debugger. Es ist nicht (wirklich). Sie müssen einige Male beenden, bevor der Debugger tatsächlich beendet wird. Das gleiche Verhalten für Ctrl-C und Ctrl-D (mit der zusätzlichen Frustration, dass Ctrl-D mehrmals getroffen wird, beendet schließlich auch das Terminal).
Gibt es eine kluge Möglichkeit, den Abbruch zu erzwingen? Ist dieser Workflow überhaupt sinnvoll? Was ist der Standardweg?
Ich bekomme das jetzt auch. Dies ist ein neues Verhalten. Früher war es gut, aber jetzt hört es einfach nicht auf. selbst wenn man eine Ausnahme wirft, wird es nicht aufhören. – felix
Link zu [GitHub-Problem] (https://github.com/gotcha/ipdb/issues/111) zu diesem Problem. –
Das ursprüngliche Problem wurde in ipython 5.2 gelöst, siehe @ cheflo's Antwort. Können Sie es als die Antwort akzeptieren, andere Leute nicht mit den vorgeschlagenen Problemumgehungen zu verwechseln? – ffeast