[gelöst]: suche trace-modul

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
bastian.weber
User
Beiträge: 15
Registriert: Montag 4. August 2008, 23:30
Wohnort: Dresden

Hallo erstmal ins Forum.

Die Frage, die mich zur Zeit bewegt ist folgende: Gibt es ein Modul, mit dem ich ein statement (z. Bsp. einen Funktionsaufruf) auf Quelltext-Zeilen-Ebene nachvollziehen kann und nach Möglichkeit für jede ausgeführte Zeile auch noch Zugriff auf die str-representationen der einzelnen Variablen habe.

Das ganze soll funktionieren, ohne dass ich in die Quelldatei schreiben muss. Dass ich dort z. Bsp. mit 1/0 eine Exception erzeugen kann und aus dem Stacktrace eine ganze Menge Infos kriege, weiß ich auch schon. Was ich suche, soll aber von außen funktionieren. Also eine supertrace funktion a la

Code: Alles auswählen

..
import coolesModul
srclines, filesrc, objects=supertrace('coolesModul.fcn1("bla", "blub")')
..

srclines wäre dann eine Liste mit strings, welche die ausgeführten Quellcodezeilen darstellen.
filesrc wäre eine ebensolange liste, deren Elemente sagen woher die Quellzeile stammt.
objects wäre eine liste mit dictionaries, ebenfalls von dieser Länge. Jedes dict enthielte dann zu den entsprechenden Variablennamen als Schlüssel Einträge die dem Inhalt der Variable zum Zeitpunkt des Ausführens dieser Codezeile entsprachen.

Kennt jemand sowas? Wahrscheinlich nicht. ;) Aber vielleicht gibt es ein Modul, was weite Teile der benötigten Funktionalität bereitstellt...

Was ich suche ist eine Art automatisierter Debugger-Lauf. Vielleicht kann man es auch als spezielles Profiling sehen. Einen griffigen Namen hab ich noch nicht gefunden.

Das interessanteste was ich bisher zum Thema gefunden hab ist übrigens in den Threads
http://www.python-forum.de/topic-11437. ... ight=trace
http://www.python-forum.de/topic-9658.h ... ight=trace
zu lesen.


Hintergrund ist übrigens das möglichst einfache Nachvollziehen von Funktionalität in Quellcode, den man nicht selbst geschrieben hat, (und in dem man auch kein Schreibrecht hat.) Ich denke wenn man sich in ein neues Projekt einarbeiten will, wie ich gerade in sympy, könnte sowas schon was nützen.

Schon mal Danke für sachdienliche Hinweise. Auf das Zusammenpusseln, hab ich schon richtig Lust.

Gruß,
Bastian.
Zuletzt geändert von bastian.weber am Sonntag 10. August 2008, 21:23, insgesamt 1-mal geändert.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

``sys.settrace`` könnte dir da behilflich sein.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Quellcode, in dem man kein Schreibrecht hat
Hmm, und was ist mit einer Arbeitskopie?
bastian.weber
User
Beiträge: 15
Registriert: Montag 4. August 2008, 23:30
Wohnort: Dresden

@trundle: das war der entscheidende Hinweis! Genau das habe ich gesucht. Tausend Dank.

@mkallas: Die Sache mit den Schreibrechten ist eigentlich nur ein Nebenaspekt.
Auch so finde ich es irgendwie zu aufwendig durch das Einfügen von

Code: Alles auswählen

print "**Ich bin hier**"
print "var=%r" %var
oder Ähnlichem den Code Nachzuvollziehen. Ich will das automatisieren.


Zum Stand der Dinge:

Ich hab mittlerweile ein Modul traceReport geschrieben, welches so ziemlich das macht, was ich wollte und hübsch in einer HTML-Datei darstellt.

Ich finde es ist durchaus schon zu gebrauchen. Wen es interessiert, der kann sich ja mal melden.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Wäre schön, wenn du es der Allgemeinheit zur Verfügung stellst...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
bastian.weber
User
Beiträge: 15
Registriert: Montag 4. August 2008, 23:30
Wohnort: Dresden

für eine "release" siehe

http://www.python-forum.de/viewtopic.php?p=106895

Feedback bitte in diesen Thread dort. Ich bin gespannt.
bastian.weber
User
Beiträge: 15
Registriert: Montag 4. August 2008, 23:30
Wohnort: Dresden

Damit könnte man übrigens den Thread als [gelöst] markieren...
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Sowas wie "als gelöst markieren" gibts hier nicht. Es gibt zwar Themen, wo eine einfache Frage beantwortet wird und damit Schluss ist, aber die sind eher in der Minderzahl.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
bastian.weber
User
Beiträge: 15
Registriert: Montag 4. August 2008, 23:30
Wohnort: Dresden

Aber wieso hat z. Bsp. der Thread http://www.python-forum.de/topic-15629. ... 25a895c0cc
ein [gelöst] im Name? Ich dachte, ein Admin kann den Thread einfach entsprechend umbenennen...
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Das machen manche Poster so, weil sie es wohl aus anderen Foren kennen. Admins haben damit nichts zu tun, das kann der Threadersteller selbst (Titel im ersten Beitrag bearbeiten).
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
bastian.weber
User
Beiträge: 15
Registriert: Montag 4. August 2008, 23:30
Wohnort: Dresden

Alles klar. Wusste nicht, dass man als Starter des Posts den Titel auch ändern kann...
Ich finde Meta-Information eigentlich immer ganz gut, darum habe ich den Thread jetzt auch entsprechend umbenannt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

bastian.weber hat geschrieben:Ich finde Meta-Information eigentlich immer ganz gut, darum habe ich den Thread jetzt auch entsprechend umbenannt.
Naja, das wird hier deswegen nicht praktiziert, weil eben gelöst nicht immer gleich gelöst ist und es durchaus noch nach der Lösung interessante Diskussionen geben kann, die ggf. auch noch bessere Lösungen zu Tage fördern.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
bastian.weber
User
Beiträge: 15
Registriert: Montag 4. August 2008, 23:30
Wohnort: Dresden

Stimmt. Aber das Merkmal (bzw. der Tag) "[gelöst]" verhindert ja eine weitere Diskussion nicht, sondern fordert vielleicht auch zur Verbesserung der vorgeschlagenen Lösung heraus. Auf jeden Fall gibt es dem Benutzer der Suchfunktion den Hinweis, hier mehr finden zu können als _nur_ die Frage.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

bastian.weber hat geschrieben:Stimmt. Aber das Merkmal (bzw. der Tag) "[gelöst]" verhindert ja eine weitere Diskussion nicht, sondern fordert vielleicht auch zur Verbesserung der vorgeschlagenen Lösung heraus.
Oder verhindert dass weitere potentielle Diskussionsteilnehmer den Thread gar nicht erst anschauen und sich beteiligen.

Alles schon mal ausdiskutiert gehabt, mit immer den gleichen Argumenten auf beiden Seiten, daher sinnlos das aufzuwärmen. Letztendlich ist es dabei geblieben, dass so Markierungen zwar von den Usern gemacht werden können, aber die meisten Regulars raten davon ab.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten