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

trace mittels inspect

Beitragvon travolds » 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=]
#!/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]
[/code]

wenn ich diesen code nun unter python-2.3.4 ausführe bekomme ich als ausgabe:

[code=]
BT= 0 -- (<frame object at 0x8b48f74>, './xx.py', 8, '?', ['\tllge=inspect.trace(1)\n'], 0)
[/code]

unter python-2.4 bekomm ich aber genau das gewünschte

[code=]
BT= 0 -- (<frame object at 0x80806cc>, './walter.py', 6, '?', ['\ti=15/0;\n'], 0)
[/code]

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=]
llge=inspect.trace(999)
[/code]

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

Beitragvon travolds » Dienstag 19. September 2006, 13:56

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

[code=]
try:
i=15/0
except Exception, e:
(type, value, tb) = sys.exc_info ()
last = traceback.extract_tb(tb);
print "LAST CALL: ", last;
[/code]

lg
Geisterfahrer können sehr entgegenkommend sein....

Wer ist online?

Mitglieder in diesem Forum: Astorek