如何检查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])
答案 0 :(得分:4)
一些Python模块是用C语言编写的(为了提高性能),并且无法在pdb
中逐步完成。如果真的希望看到这些功能发生了什么,那么这是可能的,但不是微不足道的。为了检查C函数,我通常使用GNU调试器(GDB)并在启用调试符号的情况下编译Python。
解开Python源代码| tar xzvf Python-2.7.6.tar.gz
输入untarred目录并使用|运行配置脚本./configure
使用调试符号进行编译make -g
使用GNU Debugger |启动自定义编译的调试Python gdb ./python
在GDB中为sum()
调用|设置断点b bltinmodule.c:builtin_sum
。
从GDB运行您的脚本(我称之为我的sumtest.py)| run ~/sumtest.py
首先发生的是提示您进行PDB呼叫。继续使用c
。
下一个中断位于C中sum函数的中间。您可以使用info locals
列出所有局部变量。就像在PDB中c
用于继续执行下一个断点一样,amd s
用于单步指令。