2012-10-24 15 views
6

Chcę być w stanie zbadać i prześledzić za pomocą kodu źródłowego Pythona, aby zobaczyć jak to działa pod maską, i aby rozwiązać wątpliwości funkcji, które nie są wyraźnie udokumentowane w dokumencie referencyjnym.Próbuje zacząć śledzenie cechy i zachowanie Pythona poprzez kod źródłowy

Chciałbym mieć jakiś początkowy informacje o tym jak go o to, bo to dość przytłaczająca. Mogę czytać C, więc mam to dla mnie. Poza tym zadanie wydaje się nieco onieśmielające bez przynajmniej niewielkiej ilości wskazówek.

Na przykład, powiedzmy, że chciałem udokumentować, jak odniesienie do atrybutu jest zaimplementowane w Pythonie. W jaki sposób chciałbym śledzić, co dzieje się, gdy wyrażenie referencyjne atrybutu jest obecne w programie Python?

Może przegląd jak kod źródłowy jest zorganizowane i co każda część nie byłoby pomocne, wraz z kilkoma „Walk = thru” przykładów, takich jak „Reference atrybut” sprawy.

Szukałem informacji na ten temat, ale wydaje się, że niewiele.

Odpowiedz

1

Może dobry debugger Pythona może pomóc? Chciałbym spróbować użyć PyDev plugin for Eclipse. Pomogłoby to przynajmniej w śledzeniu, jakie specjalne metody python (takie jak __getattr__() lub __setattr__()) są wywoływane, gdy odwołujesz się do atrybutu klasy. Jeśli chcesz wejść głębiej, możesz spojrzeć na Python C API lub nawet Python C Source Code.

+0

OP prosi o intro do źródeł Python C! – XORcist

+0

Dziękuję, nie myślałem o używaniu do tego debuggera. Przyjrzę się tej możliwości (chociaż w tej chwili nie używam Eclipse.) Jeśli chodzi o C API i kod źródłowy, byłoby to z pewnością idealne. Po prostu szukam najmniej bolesnego sposobu, aby zacząć z tym (czy jest coś takiego?) –

+2

Wygląda na to, że możesz debugować na poziomie źródła C używając [GDB z Pythonem] (http://wiki.python.org/moin/DebuggingWithGdb) – Josh

1

Istnieje moduł śledzenia w bibliotece standardowej Pythona. Posiada kilka trybów i mogą być używane do drukowania każdą linijkę kodu Pythona, ponieważ jest wykonany tak:

python -m trace -t myscript.py 

Zobacz http://docs.python.org/library/trace.html

+0

To jest doskonałe, dzięki. Zamierzam spojrzeć na to od razu i zobaczyć, jakie informacje mogę ze sobą zebrać. Obsesyjno-kompulsywny we mnie nadal chciałby wiedzieć, jak w końcu móc sięgnąć do kodu. Nie jestem pewien, czy byłoby to praktyczne przedsięwzięcie, ale widzę, że tak jest, tylko dla zabawy. –

+0

Spróbuj tego. Jest to na pewno przydatne, ale nie jestem pewien, czy ma wymagany poziom szczegółowości. Na przykład nie dostaję Pythona specjalnych wywołań metod (np. Podczas tworzenia instancji obiektu itd.) Być może istnieje opcja, którą można ustawić dla tego śledzenia, chociaż nie widziałem jej od razu. Spojrzę na to. –