Hallo!
Gibt es einen Debugger für Python, mit dem die Werte von Variablen während der Laufzeit ausgelesen werden können? Diese Möglichkeit würde mir die Fehlersuche sehr erleichtern.
Vielen Dank im Voraus!
Siggi
Variablen während der Laufzeit auslesen
Es gibt pdb in der Standardbibliothek (http://docs.python.org/library/debug.html) und WinPdb als netten grafischen Aufsatz darauf.
Du könntest aber auch ``print``-Anweisungen in Verbindung mit `repr()` im Programm verwenden. Oder das entsprechende Modul in einer Python-Shell laden und mit der Funktionalität herum spielen. Das reicht in den meisten Fällen völlig aus.
Du könntest aber auch ``print``-Anweisungen in Verbindung mit `repr()` im Programm verwenden. Oder das entsprechende Modul in einer Python-Shell laden und mit der Funktionalität herum spielen. Das reicht in den meisten Fällen völlig aus.
Vielen Dank für die Infos!
Ich habe bereits Winpdb installiert. Leider habe ich dort keine Möglichkeit gefunden, wo ich die Variable auslesen kann. Bislang habe ich in Visual Basic programmiert, wo ich im Laufzeitmodus nur mit dem Cursor der Maus auf die jeweilige Variable gehen musste, um den aktuellen Wert auslesen zu können. Gibt es evtl. etwas vergleichbares in PDB?
Vielen Dank im Voraus!
Ich habe bereits Winpdb installiert. Leider habe ich dort keine Möglichkeit gefunden, wo ich die Variable auslesen kann. Bislang habe ich in Visual Basic programmiert, wo ich im Laufzeitmodus nur mit dem Cursor der Maus auf die jeweilige Variable gehen musste, um den aktuellen Wert auslesen zu können. Gibt es evtl. etwas vergleichbares in PDB?
Vielen Dank im Voraus!
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Ich benutze meist PythonWin dafür.
Dort kann man bestimmte Variablen mit "Watch" überwachen oder sich eine Stack View anschauen.
Balloontips beim Überfahren mit der Maus bietet es leider noch nicht.
Dort kann man bestimmte Variablen mit "Watch" überwachen oder sich eine Stack View anschauen.
Balloontips beim Überfahren mit der Maus bietet es leider noch nicht.
@Siggi2008: Du hast Doch links oben die Namensräume und kannst links unten auch den Stack "hoch wandern" um an die Lokalen Namensräume von den Aufrufern zu kommen.
Also ich finde Debugger für Python in der Regel komplizierter und schwerfälliger als ein paar ``print``-Anweisungen ein zu streuen. Ich hatte bisher erst einmal den Fall, dass ich das Bedürfnis hatte eine Funktion Schritt für Schritt auszuführen, und das war ein Algoritmus, der auf einem Byte-Array operierte, nahezu 1:1 von C portiert wurde, und eben auch entsprechend aussah.
Also ich finde Debugger für Python in der Regel komplizierter und schwerfälliger als ein paar ``print``-Anweisungen ein zu streuen. Ich hatte bisher erst einmal den Fall, dass ich das Bedürfnis hatte eine Funktion Schritt für Schritt auszuführen, und das war ein Algoritmus, der auf einem Byte-Array operierte, nahezu 1:1 von C portiert wurde, und eben auch entsprechend aussah.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
BlackJack, ich finde es auch nützlich den Debugger bei Mercurial anzuwerfen (es hat extra eine Option dafür), denn Variablennamen wie `c` oder `n` oder ähnlich sind wenig hilfreich. Noch dazu dass in den Locals durchaus gerne mal irgendwelche seltsamen Bytestrings mit nicht druckbaren Zeichen rumschwirren. Da will man nicht jede Variable ausgeben lassen, weil es zu undurchsichtig wird. Allerdings gebe ich zu, dass ich sonst den Debugger kaum gebrauche. Vor allem fehlt mir etwas Farbe, der Übersichtlichkeit wegen, aber da soll Pdb++ Abhilfe schaffen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Siggi!Siggi2008 hat geschrieben:Gibt es einen Debugger für Python, mit dem die Werte von Variablen während der Laufzeit ausgelesen werden können?
Ich verwende WingIDE. Damit kann man das Programm an beliebiger Stelle stoppen und die Variablen auslesen, und sonst noch was tun. WingIDE ist eine richtig feine IDE. Deshalb kostet sie auch ein paar Euro.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!DeJe hat geschrieben:Eclipse in Verbindung mit PyDev
Kann man Eclipse inzwischen auch für einzelne Module (Skriptdateien) benutzen, oder muss man immer noch für jeden Schei... ein Projekt anlegen? Wenn das nicht mehr so umständlich ist, dann schaue ich mir Eclipse vielleicht mal wieder an.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Es gibt auch eine abgespeckte kostenlose Version "Wing IDE 101":gerold hat geschrieben:Ich verwende WingIDE. Damit kann man das Programm an beliebiger Stelle stoppen und die Variablen auslesen, und sonst noch was tun. WingIDE ist eine richtig feine IDE. Deshalb kostet sie auch ein paar Euro.
Die Unterschiede zur (nicht kostenlosen) "Personal"- und "Professional"-Version findet man hier: http://www.wingware.com/wingide/featuresIt is not open source but is free for use by educators, students, and hobbyists.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo numerix!numerix hat geschrieben:Es gibt auch eine abgespeckte kostenlose Version "Wing IDE 101"
Die feinen Sachen hat man bei dieser Version raus genommen. Dieses Wing IDE 101 ist kaum mehr Wert als ein einfacher Editor.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Dem OP ging es ja darum, "Variablenwerte auszulesen". DAS geht auch mit dem integrierten Debugger der Version "101".gerold hat geschrieben:Die feinen Sachen hat man bei dieser Version raus genommen. Dieses Wing IDE 101 ist kaum mehr Wert als ein einfacher Editor.
Mir ist leider keine andere Vorgehensweise bekannt.gerold hat geschrieben:Hallo!DeJe hat geschrieben:Eclipse in Verbindung mit PyDev
Kann man Eclipse inzwischen auch für einzelne Module (Skriptdateien) benutzen, oder muss man immer noch für jeden Schei... ein Projekt anlegen? Wenn das nicht mehr so umständlich ist, dann schaue ich mir Eclipse vielleicht mal wieder an.
mfg
Gerold
Dafür ein sehr guter Debugger, der wenig Wünsche offen läßt.
Für kleinere Scripte habich ein Sammelprojekt, dann geht auch das schnell.
Das einzige was ich bei Eclipse vermisse, ist eine nicht kostenpflichtige Konsole, aber das tut hier nichts zur Debatte
@Gerold, wie schon gesagt wurde. Ohne Projekt geht gar nix.
Aber ich finde das nicht sooo schlimm, im Gegenteil, ist mir für die Organisation sogar lieber so. An die Einzelfiles kommst ja problemlos ran, bei Python ist das kein großes Durcheinander.
Ärgerlicher ist da eher die Startup-Time.
Jap, Konsole für schnell mal einen Test fehlt mir auch. Aber Linux hat zum Glück genug Workspaces (Desktops).
Aber ich finde das nicht sooo schlimm, im Gegenteil, ist mir für die Organisation sogar lieber so. An die Einzelfiles kommst ja problemlos ran, bei Python ist das kein großes Durcheinander.
Ärgerlicher ist da eher die Startup-Time.
Jap, Konsole für schnell mal einen Test fehlt mir auch. Aber Linux hat zum Glück genug Workspaces (Desktops).