Co byłoby najłatwiejszym sposobem wykonania skryptu Pythona i, dla każdego wykonanego oświadczenia, przekazuje numer linii lub samą linię do funkcji wywołania zwrotnego? Na przykład

Kawałek kodu do wykonania

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

I zwrotny

def callback(line):
   print line

Wynik byłby następujący:

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

Innym sposobem stwierdzenia tego jest to, że chcę znać kodu, który byłby obok wykonywania, gdybym prowadził skrypt wchodzę przez debugera. Widziałem To pytanie o śledzenie, ale interesuje mnie robienie więcej niż śledzenie liczby razy wykonywanych w funkcji wywołania zwrotnego.

Debugger będzie pomocny, ale tylko wtedy, gdy mogę uruchomić to nieinteraktywny tryb z możliwością oddzwonienia do kodu Pythona

1
dfb 3 sierpień 2012, 09:23

3 odpowiedzi

Najlepsza odpowiedź

Spójrz na Sys.setTrace Funkcja. Pozwala to określić funkcję śledzenia, która jest wykonywana dla każdej linii kodu. Myślałem, że specjalnie wdrażane, aby utworzyć pdb, więc jest na odpowiednim poziomie abstrakcji, którą wydajesz się chcieć. Wdrażanie tego, co chcesz, nie będzie trywialny, ale myślę, że to najlepsze miejsce do rozpoczęcia.

W przypadku programu produkcyjnego, który używa tego, spójrz na pokrycie.py.

3
Noufal Ibrahim 3 sierpień 2012, 16:12

Akceptując odpowiedź Noufal, ponieważ umieścił mnie na właściwej ścieżce, ale pomogło to również

http://www.dalkesciCitific.com/writings/diary/archive/2005/04/20/TRACING_PYTHON_CODE.HTML.

2
dfb 3 sierpień 2012, 21:55

Kwiecień moduł głupca goto jest przykładem pracy śledzenia realizowanego w Pythonie, więc chociaż jest niewątpliwie wolniejszy (niż wdrożenie C w zasięgu pokrycia.py), jest raczej łatwe do zrozumienia. http://entrian.com/goto/

2
Fábio Santos 31 styczeń 2013, 11:03