繁体   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