Mit einer der Instanzvariablen meiner Klasse passiert etwas. Ich möchte die Variable zu einer Eigenschaft machen, und bei jedem Zugriff möchte ich den Stack-Trace des gesamten Codes ausdrucken, der bis zu diesem Punkt führt, damit ich sehen kann, wo er durcheinander gebracht wird. Wie drucke ich den Stack-Trace aus, wenn keine Ausnahme ausgelöst wurde? Ich weiß, wenn es eine Ausnahme gibt, kann ich so etwas tun traceback.format_tb(sys.exc_info()[2])
.
Es könnte auch nützlich sein, nur die letzten 3-4 Ebenen zu drucken, da die ersten wahrscheinlich nicht so interessant sein werden.
quelle
full_stack()
Funktion geholfen !Anstatt nach stdout zu drucken, können Sie Folgendes verwenden, wenn Sie eine Zeichenfolge benötigen, die an einen Logger übergeben werden soll:
''.join(traceback.format_stack())
Beachten Sie, dass traceback.format_stack () den Stacktrace als formatierte Liste von Zeichenfolgen zurückgibt, sodass Sie ihn beliebig aufteilen können. Um die letzten Elemente des Stacktraces zu erhalten, können Sie Folgendes tun:
''.join(traceback.format_stack()[-N:])
Wobei N die Anzahl der Ebenen ist, an denen Sie interessiert sind.
quelle