Variablen während der Laufzeit auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Siggi2008
User
Beiträge: 6
Registriert: Donnerstag 27. November 2008, 10:13

Donnerstag 27. November 2008, 10:25

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
BlackJack

Donnerstag 27. November 2008, 11:06

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.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Donnerstag 27. November 2008, 11:07

Integriert: pdb wenn du etwas grafisches willst winpdb.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Siggi2008
User
Beiträge: 6
Registriert: Donnerstag 27. November 2008, 10:13

Donnerstag 27. November 2008, 11:11

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!
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Donnerstag 27. November 2008, 11:25

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. :)
BlackJack

Donnerstag 27. November 2008, 12:19

@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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 27. November 2008, 12:53

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 Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 27. November 2008, 13:11

Siggi2008 hat geschrieben:Gibt es einen Debugger für Python, mit dem die Werte von Variablen während der Laufzeit ausgelesen werden können?
Hallo Siggi!

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.
DeJe
User
Beiträge: 39
Registriert: Sonntag 23. November 2008, 19:38

Donnerstag 27. November 2008, 13:32

Ich nutze zur Zeit für meine Spielereien Eclipse in Verbindung mit PyDev.
Der Debugger ist sauber integriert mit eigentlich Allem was man so braucht.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 27. November 2008, 15:06

DeJe hat geschrieben:Eclipse in Verbindung mit PyDev
Hallo!

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Donnerstag 27. November 2008, 15:26

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.
Es gibt auch eine abgespeckte kostenlose Version "Wing IDE 101":
It is not open source but is free for use by educators, students, and hobbyists.
Die Unterschiede zur (nicht kostenlosen) "Personal"- und "Professional"-Version findet man hier: http://www.wingware.com/wingide/features
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 27. November 2008, 15:47

numerix hat geschrieben:Es gibt auch eine abgespeckte kostenlose Version "Wing IDE 101"
Hallo numerix!

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Donnerstag 27. November 2008, 16:07

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.
Dem OP ging es ja darum, "Variablenwerte auszulesen". DAS geht auch mit dem integrierten Debugger der Version "101".
Nergal
User
Beiträge: 72
Registriert: Montag 6. Oktober 2008, 14:02

Donnerstag 27. November 2008, 16:33

gerold hat geschrieben:
DeJe hat geschrieben:Eclipse in Verbindung mit PyDev
Hallo!

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
:-)
Mir ist leider keine andere Vorgehensweise bekannt.
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 ;)
DeJe
User
Beiträge: 39
Registriert: Sonntag 23. November 2008, 19:38

Donnerstag 27. November 2008, 18:19

@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). :D
Antworten