[英]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.