2012-08-03 4 views
1

파이썬 스크립트를 실행하는 가장 쉬운 방법은 무엇이고, 실행 된 각 문장에 대해 라인 번호 또는 라인 자체를 콜백 함수에 전달 하시겠습니까? 예를파이썬 프로그램 라인/문장의 실행을 프로그램 적으로 라인으로 추적하기

를 들어 코드의 조각은

def callback(line): 
    print line 

가 출력 될 것

for i in range(5): 
    z = i**2 

및 콜백을 실행합니다 :

for i in range(5): 
    z = i**2 
for i in range(5): 
    z = i**2 
for i in range(5): 
    z = i**2 
... 
etc 

이 주장하는 또 다른 방법이 있다는 것입니다 I 디버그를 통해 스크립트를 실행하고 있다면 실행될 코드 조각을 알고 싶습니다. ger .. 나는 this question about tracing을 본 적이 있지만 콜백 함수에서 실행 된 횟수를 추적하는 것 이상을 수행하는 데 관심이 있습니다.

디버거가 도움이 될 것,하지만 나는 sys.settrace 기능에

답변

3

봐 다시 파이썬 코드를 호출 할 수있는 기능이 비대화 형 모드로 실행하면됩니다. 이렇게하면 모든 코드 행에 대해 실행되는 추적 기능을 지정할 수 있습니다. 제 생각에는 특별히 pdb을 구현하기 위해 구현되었으므로 원하는 추상화 수준에 있습니다. 당신이 원하는 것을 구현하는 것은 사소한 일이 아니지만 시작하는 것이 가장 좋은 곳이라고 생각합니다.

이것을 사용하는 프로덕션 프로그램의 경우 coverage.py을보십시오.

2

이 doubtlessly 느리다 그래서 비록 4 월의 바보 모듈 goto는 파이썬으로 구현 추적의 일 예이다 (coverage.py의 C 구현보다) 이해하기 쉽습니다. http://entrian.com/goto/

+0

그게 ... 일종의 끔찍하지만 재미있는 :) – dfb

+0

@dfb 참으로. 또한 실행 헤드를 다른 행으로 변경하는 방법을 보여줍니다. 이 코드를 기반으로 절대적이고 상대적인 JMP 명령어를 구현했습니다. 아주 재미 있습니다. –

관련 문제