Seite 1 von 1

Variablen während der Laufzeit auslesen

Verfasst: Donnerstag 27. November 2008, 10:25
von Siggi2008
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

Verfasst: Donnerstag 27. November 2008, 11:06
von BlackJack
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.

Verfasst: Donnerstag 27. November 2008, 11:07
von veers
Integriert: pdb wenn du etwas grafisches willst winpdb.

Verfasst: Donnerstag 27. November 2008, 11:11
von Siggi2008
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!

Verfasst: Donnerstag 27. November 2008, 11:25
von mkesper
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. :)

Verfasst: Donnerstag 27. November 2008, 12:19
von BlackJack
@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.

Verfasst: Donnerstag 27. November 2008, 12:53
von Leonidas
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.

Re: Variablen während der Laufzeit auslesen

Verfasst: Donnerstag 27. November 2008, 13:11
von gerold
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
:-)

Verfasst: Donnerstag 27. November 2008, 13:32
von DeJe
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.

Verfasst: Donnerstag 27. November 2008, 15:06
von gerold
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
:-)

Re: Variablen während der Laufzeit auslesen

Verfasst: Donnerstag 27. November 2008, 15:26
von numerix
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

Re: Variablen während der Laufzeit auslesen

Verfasst: Donnerstag 27. November 2008, 15:47
von gerold
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
:-)

Re: Variablen während der Laufzeit auslesen

Verfasst: Donnerstag 27. November 2008, 16:07
von numerix
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".

Verfasst: Donnerstag 27. November 2008, 16:33
von Nergal
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 ;)

Verfasst: Donnerstag 27. November 2008, 18:19
von DeJe
@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