Следующий фрагмент:
import traceback
def a():
b()
def b():
try:
c()
except:
traceback.print_exc()
def c():
assert False
a()
Производит этот вывод:
Traceback (most recent call last):
File "test.py", line 8, in b
c()
File "test.py", line 13, in c
assert False
AssertionError
Что мне использовать, если я хочу получить полную трассу стека, включая вызов a?
Если это важно, у меня есть Python 2.6.6
edit: Что я хочу получить, так это ту же самую информацию, которую я бы получил, если бы оставил попытку кроме как есть, и позволил бы исключению распространиться на верхний уровень. Этот фрагмент, например:
def a():
b()
def b():
c()
def c():
assert False
a()
производит этот вывод:
Traceback (most recent call last):
File "test.py", line 10, in <module>
a()
File "test.py", line 2, in a
b()
File "test.py", line 5, in b
c()
File "test.py", line 8, in c
assert False
AssertionError
Используйте
traceback.print_stack()
http://docs.python.org/library/traceback.html#traceback.print_stack
suxmac2 $ python out.py File "out.py", line 16, in <module> a() File "out.py", line 5, in a b() File "out.py", line 11, in b traceback.print_stack()