2012-12-16 3 views
0

이 함수에 대한 함수 호출 순서를 이해하기 위해 함수에 어설 션 (assert) (0)을 추가했습니다.완전한 역 추적을 보는 방법?

예는 :

def my_func(): 
    ...lines of code... 
    assert(0) 
    ...more lines of code... 

은 로그 만 표시이 :

Traceback (most recent call last): 
    File "/var/www/folder/file.py", line 273, in my_func 
    assert(0) 
AssertionError 

나는 전체 통화 추적보고 싶어 - 예 : first_func -> second_func -> my_func

나는 노력을 traceback 라이브러리가 있지만 동일한 스택 추적을 보여줍니다. 내가 여기에없는 것을 알려주십시오.

+0

중복 가능성 http://stackoverflow.com/questions/3702675/print-the-full-traceback-in-python-without- halting-the-program) – Nathan

+0

@ Alexey의 대답은 도움이된다. ** full ** traceback (보통 명령 행에서 볼 수있는 것)을 원하면 [my answer]의 한 줄자를 사용할 수있다. http://stackoverflow.com/a/33723119/1467306)에서 비슷한 질문을합니다. –

답변

3

traceback 모듈을 사용하십시오. 나는.

>>> import traceback 
>>> def my_func(): 
...  my_other_func() 
... 
>>> def my_other_func(): 
...  my_third() 
... 
>>> def my_third(): 
...  print "Stack" 
...  traceback.print_stack() 
...  print "Extracted" 
...  print repr(traceback.extract_stack()) 
... 
>>> 
>>> my_func() 
Stack 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 2, in my_func 
    File "<stdin>", line 2, in my_other_func 
    File "<stdin>", line 3, in my_third 
Extracted 
[('<stdin>', 1, '<module>', None), 
('<stdin>', 2, 'my_func', None), 
('<stdin>', 2, 'my_other_func', None), 
('<stdin>', 5, 'my_third', None)] 
>>> 
([(프로그램을 중단하지 않고) 파이썬 전체 트레이스 백을 프린트]의
+0

감사합니다. Alexey, traceback.extract_stack() helped! – Jamal

관련 문제