twa*_*lig 4 python debugging system-calls libraries pdb
当我运行我的Python调试器时,我可以进入我编写的函数.但是,如果我尝试进入类似的库函数os.mkdir("folder"),例如,它会"跨越"它.有没有办法进入内置库函数,看看Python正在做什么?
理想情况下,有一种方法可以在PyPy中执行此操作,以便您可以继续深入研究Python代码.
pdb,Python调试器,不能步入C函数os.mkdir,但gdb可以.试试这个:
gdb --args python whatever.py ...
Run Code Online (Sandbox Code Playgroud)
然后:
start
break posix_mkdir
continue
Run Code Online (Sandbox Code Playgroud)
您应该看到它在Python的os.mkdir实现中停止,详见此处:https://stackoverflow.com/a/16617835/4323
os.mkdir()是用C代码实现的,pdb不能进入该函数.
您仅限于调试纯Python代码; 该代码是否是标准库的一部分并不重要.例如,你可以进入shutil模块,或者os.path就好了.
os.mkdir() 必须调用本机代码,因为它与操作系统交互; 即使PyPy必须遵循底层(主机-Python)os.mkdir()调用来处理该部分,因此pdb即使在PyPy中也无法进入它.实际上,就像在CPython中一样,标准库的那部分是RPython运行时的一部分,并且不被PyPy视为"本机Python代码",就像内置类型是运行时环境的一部分一样.
您可以运行未翻译的PyPy解释器(因此不能静态编译RPython代码,但让Python直接运行PyPy解释器),但这只能让您访问RPython代码路径,而不是os.mkdir()C代码.
| 归档时间: |
|
| 查看次数: |
1566 次 |
| 最近记录: |