74 votes

imprimer la trace de la pile python sans exception levée

Quelque chose de funky qui se passe avec l'un des ma de la classe des variables d'instance. Je veux faire de la variable d'une propriété, et à chaque fois que c'est accessible, je veux imprimer la trace de la pile de tous le code jusqu'à ce point, afin que je puisse voir où il est sali avec. Comment puis-je imprimer la trace de la pile lorsqu'aucune exception n'a été soulevée? Je sais que si il y a une exception, je peux faire quelque chose comme traceback.format_tb(sys.exc_info()[2]).

Aussi ce qui pourrait être utile, c'est d'imprimer uniquement la dernière 3-4 niveaux, depuis les premiers sont probablement ne va pas être intéressant.

107voto

delnan Points 52260

traceback.print_stack() :

 >>> def f():
...   def g():
...     traceback.print_stack()
...   g()
...
>>> f()
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in f
  File "<stdin>", line 3, in g
 

Modifier: vous pouvez également utiliser extract_stack , prendre une tranche (par exemple stack[5:] pour exclure les 5 premiers niveaux) et utiliser format_list pour obtenir une trace de pile prête à imprimer ( '\n'.join(traceback.format_list(...)) )

1voto

lambacck Points 4955

0voto

Essayez d'utiliser le module trace .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X