Seite 1 von 1

[gelöst]: suche trace-modul

Verfasst: Dienstag 5. August 2008, 00:10
von bastian.weber
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.

Verfasst: Dienstag 5. August 2008, 00:18
von Trundle
``sys.settrace`` könnte dir da behilflich sein.

Verfasst: Dienstag 5. August 2008, 16:59
von mkesper
Quellcode, in dem man kein Schreibrecht hat
Hmm, und was ist mit einer Arbeitskopie?

Verfasst: Mittwoch 6. August 2008, 14:19
von bastian.weber
@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.

Verfasst: Mittwoch 6. August 2008, 16:36
von birkenfeld
Wäre schön, wenn du es der Allgemeinheit zur Verfügung stellst...

Verfasst: Donnerstag 7. August 2008, 14:40
von bastian.weber
für eine "release" siehe

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

Feedback bitte in diesen Thread dort. Ich bin gespannt.

Verfasst: Sonntag 10. August 2008, 17:04
von bastian.weber
Damit könnte man übrigens den Thread als [gelöst] markieren...

Verfasst: Sonntag 10. August 2008, 20:24
von birkenfeld
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.

Verfasst: Sonntag 10. August 2008, 20:50
von bastian.weber
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...

Verfasst: Sonntag 10. August 2008, 20:55
von birkenfeld
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).

Verfasst: Sonntag 10. August 2008, 21:25
von bastian.weber
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.

Verfasst: Montag 11. August 2008, 13:12
von Leonidas
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.

Verfasst: Montag 11. August 2008, 22:32
von bastian.weber
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.

Verfasst: Montag 11. August 2008, 23:28
von Leonidas
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.