2012-10-24 61 views
6

我希望能夠進行調查,並通過Python源代碼跟蹤看東西引擎蓋下是如何工作的,以及解決有關功能的疑慮未明確記錄跟蹤的Python功能和行爲在參考文件中。試圖開始通過源代碼

我想對如何去一些這方面的信息開始,因爲它是相當熱烈。我可以閱讀C,所以我有這樣的想法。除此之外,如果沒有至少少量的指導,這個任務似乎有點嚇人。

例如,假設我想記錄如何屬性引用在Python中實現。我將如何去追蹤Python程序中存在屬性引用表達式時會發生什麼?

也許各個部件沒有如何的源代碼的組織和這將是有益的,有些一起「走通=」例子,如「屬性引用」情況的概述。

我搜索了這個信息,但似乎沒有多大。

回答

1

也許一個好的Python調試器會有幫助嗎?我會嘗試使用PyDev plugin for Eclipse。這至少可以幫助您追蹤在引用某個類的屬性時調用了哪些特殊的Python方法(如__getattr__()__setattr__())。如果你需要更深入,你可以看看Python C API甚至Python C Source Code

+0

OP被詢問的介紹到Python的C程序源代碼! – XORcist

+0

謝謝,我沒有想過使用調試器。我會看看這種可能性(儘管目前我沒有使用Eclipse)。至於C API和源代碼,這絕對是理想的。只是尋找最痛苦的方式來開始(有什麼那樣的嗎?) –

+2

看起來你可以使用[GDB與Python]在C源代碼級別進行調試(http://wiki.python.org/moin/DebuggingWithGdb) – Josh

1

有Python標準庫中的跟蹤模塊。它有幾種模式,可用於打印的python的每一行代碼,因爲它是這樣執行的:

python -m trace -t myscript.py 

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

+0

這很好,謝謝。我將馬上看看這些信息,看看我可以收集哪些信息。儘管如此,我仍然想知道如何能夠深入代碼。不確定這將是一個實際的努力,但我可以看到它是如此,如果只是爲了好玩。 –

+0

給了這個嘗試。這當然很有用,但我不確定它是否具有所需的詳細程度。例如,我沒有得到python特殊的方法調用(例如當實例化一個對象等)。也許有一個選項可以設置爲跟蹤這個,但我沒有看到一個馬上。我會看一看。 –