2009-05-25 3 views
1

은 최근 파이썬파이썬이 예외를 발생시키는 함수의 범위를 검사하려면 어떻게해야합니까?

 
-i  : inspect interactively after running script, (also PYTHONINSPECT=x) 
     and force prompts, even if stdin does not appear to be a terminal 

이 전역 개체를 검사하기위한 매우 중요하지만, 예외가 함수 호출에서 제기 된 경우 어떤 일이 발생에 매우 유용 '-i'플래그를 발견, 내가 한 함수의 지역 변수를 검사하고 싶습니까? 당연히 예외가 처음 제기 된 곳의 범위에 관심이 있습니다. 어떤 방식 으로든 접근 할 수 있습니까?

+0

이 질문을 확인하십시오 : [오류시 자동으로 파이썬 디버거 시작하기] (http://stackoverflow.com/questions/242485/starting-python-debugger-automatically-on-error) – tzot

+0

고맙지 만 이것이 정확히 무엇인지는 모르겠습니다. 찾고. 가능한 경우 코드를 래핑하지 않아도됩니다. – saffsd

답변

5

를 대화 형 프롬프트에서 :

+0

흥미 롭습니다. 하지만 왜 그것은 당신이 정기적 인 pdb 세션에서와 같은 변수에 접근하게하지 못합니까? 결과가 나타나도록 프린트 varname을해야합니다. – Unknown

4

사용 ipython : http://mail.scipy.org/pipermail/ipython-user/2007-January/003985.html

사용 예 : 코드를 통해

from IPython.Debugger import Tracer; debug_here = Tracer() 

#... later in your code 
debug_here() # -> will open up the debugger at that point. 

"디버거가 활성화되면, 당신은 정기적으로 모든 명령을 사용할 수 있습니다 단계는 PDB를 참조, 등을 중단 점을 설정 사용법에 대한 자세한 내용은 Python 표준 라이브러리의 설명서를 참조하십시오. ") (즉시

>>> import pdb 
>>> pdb.pm() 

pdb.pm을 입력

>>> %pdb on 
>>> %run my_script.py 
+0

감사합니다. 브라이언! – reto

5

ipython, 당신은 당신의 코드를 수정하지 않고도 추락 위치에 변수를 검사 할 수 있습니다 사후 (post-mortem) 디버거입니다. 예외가 발생한 범위에 넣고 일반적인 pdb 명령을 사용할 수 있습니다.

나는 항상이 을 사용합니다. 표준 라이브러리 (ipython이 필요 없음)의 일부이므로 소스 코드에 디버깅 명령을 편집 할 필요가 없습니다.

유일한 트릭은 바로 수행하는 것을 기억하는 것입니다. 다른 명령을 먼저 입력하면 예외가 발생한 범위를 잃게됩니다.

관련 문제