Hallo!
Habt ihr eine Ahnung, wie man Python-Code tracen kann? Am liebsten wäre mir ein Programm, welches mir einen Baum mit Funktionen anzeigt, welche aufgerufen werden. Ich habe mir das `trace`-Modul angesehen, das kann die Funktionen etc. anzeigen, aber es zeigt auch Code von Extension-Modulen an, die ich nutze (deren Code mich aber nicht sonderlich interessiert).
Also: Was nutzt ihr zum tracen? Und: Muss ich mir etwa so etwas selbst schreiben?
Python-Code tracen
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Leonidas!Leonidas hat geschrieben:Habt ihr eine Ahnung, wie man Python-Code tracen kann?
Ich weiß vielleicht nicht ganz was du meinst. So etwas wie einen Call-Stack? Im WingIDE kann ich einen Call-Stack einblenden. Der zeigt mir alle Funktionen in einem Stapel die beim Debuggen zur aktuellen Zeile aktiv sind. So kann ich gezielt die aktiven Funktionen anspringen.
lg
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, so in etwa - ich hätte gerne eine Übericht, welche Funktion welche aufgerufen hat und in welcher Reihenfolge.gerold hat geschrieben:Ich weiß vielleicht nicht ganz was du meinst. So etwas wie einen Call-Stack? Im WingIDE kann ich einen Call-Stack einblenden. Der zeigt mir alle Funktionen in einem Stapel die beim Debuggen zur aktuellen Zeile aktiv sind. So kann ich gezielt die aktiven Funktionen anspringen.
WingIDE fällt weg, da ich eine Lösung möchte, die nicht grafisch ist, also auch in meinem SSH-Fenster funktioniert.
Bin grade dabei, da selbst was zu implementieren, habe aber gerade noch einige Probleme mit dem `sys.settrace`-Hook.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja. Allerdings bin ich bald so weit, dass ich meinen eigenen Tracer verwenden kann.BlackJack hat geschrieben:Hm, dann fällt Python Call Graph wohl weg.
Seine Ausgabe im Moment:
Code: Alles auswählen
| ? (file dresden.py)
| ? (file lexer.py)
| ? (file parser.py)
| ? (file ast.py)
| ASTNode (file ast.py)
| Program (file ast.py)
| AbstractClass (file ast.py)
| MainClass (file ast.py)
| ClassDecl (file ast.py)
| VarDecl (file ast.py)
| MethodDecl (file ast.py)
| FormalList (file ast.py)
| FormalRest (file ast.py)
| Type (file ast.py)
| Statement (file ast.py)
| Exp (file ast.py)
| ExpList (file ast.py)
| ExpRest (file ast.py)
| TreeDumper (file ast.py)
| main (file dresden.py)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
das ist ja mal ein schickes toolBlackJack hat geschrieben:Hm, dann fällt Python Call Graph wohl weg.
hast du noch mehr so musthaves von denen ich nichts weiss?
Hi,
geht es um Offline oder Realtime? Deine Implementierung wäre doch auch sehr interessant zur Einbindung in einen Editor. Es müsste doch schon andere geben die in der Hinsicht etwas gemacht haben.
geht es um Offline oder Realtime? Deine Implementierung wäre doch auch sehr interessant zur Einbindung in einen Editor. Es müsste doch schon andere geben die in der Hinsicht etwas gemacht haben.
Hi! I'm a .signature virus! copy me into your .signature file to help me spread!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hängt ab, wie du Offline oder Realtime definierst. Es zeigt den Tree zur Laufzeit an, funktioniert in der Regel ganz gut, außer dass es manchmal Exceptions verschluckt.gecko hat geschrieben:geht es um Offline oder Realtime? Deine Implementierung wäre doch auch sehr interessant zur Einbindung in einen Editor. Es müsste doch schon andere geben die in der Hinsicht etwas gemacht haben.
Für Interessierte habe ich die aktuelle Version mal gepastet. Meine Motivation ist Momentan aber recht gering, da groß noch etwas zu machen, denn es ist nur als eine Art Seiteneffekt entstanden. Ich kann damit das tracen was ich brauche, das was nicht funktioniert stört mich momentan auch nicht sonderlich. Wenn jemand Patches hat, nehme ich die aber dennoch gerne an. Besonders das Exception-Problem ist etwas ärgerlich (nur nicht ausreichend ärgerlich, damit ich da jetzt wieder Zeit zum Debuggen investiere, die ich für das Hauptprojekt brauche, für die der Tracer eigentlich geschrieben wurde).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice