簡體   English   中英

我可以進入Python庫代碼嗎?

[英]Can I step into Python library code?

當我運行我的Python調試器時,我可以進入我編寫的函數。 但是,如果我嘗試進入像os.mkdir("folder")這樣的庫函數,那么它就會“跨越”它。 有沒有辦法進入內置庫函數,看看Python正在做什么?

理想情況下,有一種方法可以在PyPy中執行此操作,以便您可以繼續深入研究Python代碼。

pdb ,Python調試器,不能進入像os.mkdir這樣的C函數,但是gdb可以。 嘗試這個:

gdb --args python whatever.py ...

然后:

start
break posix_mkdir
continue

您應該看到它在Python的os.mkdir實現中停止,詳見此處: https ://stackoverflow.com/a/16617835/4323

os.mkdir()在C代碼中實現, pdb無法進入該函數。

您僅限於調試純Python代碼; 該代碼是否是標准庫的一部分並不重要。 例如,您可以單步進入shutil模塊或os.path

os.mkdir() 必須調用本機代碼,因為它與操作系統交互; 即使PyPy必須os.mkdir()底層(host-Python) os.mkdir()調用來處理該部分,因此即使在PyPy中也無法使用pdb進入它。 事實上,就像在CPython中一樣,標准庫的那部分是RPython運行時的一部分,並且不被PyPy視為“本機Python代碼”,就像內置類型是運行時環境的一部分一樣。

您可以運行PyPy解釋器未翻譯 (因此不能靜態編譯RPython代碼,但讓Python直接運行PyPy解釋器),但這只能讓您訪問RPython代碼路徑,而不是os.mkdir() C代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM