如何检查 python 内置函数的代码,例如进入 sum()
?
https://docs.python.org/2/library/functions.html#sum .
我希望看到 sum()
使用下面的代码和 pdb 中的 s
命令做了什么:
import pdb
def adder(nums):
x = sum(nums)
return x
pdb.set_trace()
print adder([1, 2, 3,4])
最佳答案
一些 Python 模块是用 C 语言编写的(以提高性能),无法在 pdb
中单步执行。如果您真的想看看这些函数中发生了什么,这是可能的,但并非微不足道。为了检查 C 函数,我通常使用 GNU 调试器 (GDB) 并在启用调试符号的情况下编译 Python。
下载位于 https://www.python.org/downloads/ 的 Python 源代码
解压 Python 源代码 |
tar xzvf Python-2.7.6.tar.gz
进入解压后的目录并使用 | 运行配置脚本
./configure
使用调试符号编译 |
make -g
使用 GNU 调试器启动自定义编译调试 Python |
gdb ./python
在 GDB 中为
sum()
调用设置断点 |b bltinmodule.c:builtin_sum
.从 GDB 运行您的脚本(我调用了我的 sumtest.py)|
运行 ~/sumtest.py
发生的第一件事是提示您进行 PDB 调用。继续使用 c
。
下一个中断在 C 中的求和函数的中间。您可以使用 info locals
列出所有局部变量。就像在 PDB 中一样,c
用于继续执行到下一个断点,而 s
用于单步执行单条指令。
关于python - 使用pdb调试时可以查看python内置函数的源代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23319883/