trace mittels inspect

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
travolds
User
Beiträge: 2
Registriert: Donnerstag 29. Juni 2006, 12:05

Dienstag 19. September 2006, 09:54

hallo an alle :)

ich habe ein problem mit dem auswerten des backtraces unter python-2.3.4.

folgender code wird ausgeführt:

Code: Alles auswählen

#!/usr/bin/python

import sys, inspect

try:
    i=15/0;
except Exception, e:
    llge=inspect.trace(1)
    depth=len(llge);
    for i in range(depth):
        print "BT=",i,"--",llge[i]
wenn ich diesen code nun unter python-2.3.4 ausführe bekomme ich als ausgabe:

Code: Alles auswählen

BT= 0 -- (<frame object at 0x8b48f74>, './xx.py', 8, '?', ['\tllge=inspect.trace(1)\n'], 0)
unter python-2.4 bekomm ich aber genau das gewünschte

Code: Alles auswählen

BT= 0 -- (<frame object at 0x80806cc>, './walter.py', 6, '?', ['\ti=15/0;\n'], 0)
wenn ich den trace auf mehr frames stelle, bekomme ich, wenn ich den wert gross genug annehme, das komplette file in meinen buffer 'llge', was für eine fehlerbehandlung nicht wirklich optimal ist ;)

Code: Alles auswählen

llge=inspect.trace(999)
weiß einer von euch vl wie ich das unter python-2.3.4 realisieren könnte?

vielen dank schon mal + lg
Geisterfahrer können sehr entgegenkommend sein....
travolds
User
Beiträge: 2
Registriert: Donnerstag 29. Juni 2006, 12:05

Dienstag 19. September 2006, 13:56

so nach ewigem probieren jetzt doch eine lösung falls mal jemand vor dem selben problem steht :)

Code: Alles auswählen

try:
    i=15/0
except Exception, e:
    (type, value, tb) = sys.exc_info ()
    last = traceback.extract_tb(tb);
    print "LAST CALL: ", last;
lg
Geisterfahrer können sehr entgegenkommend sein....
Antworten