Dav*_*ave 4 python debugging built-in python-2.7 pdb
如何检查 python 内置函数的代码,例如单步执行sum()
?
https://docs.python.org/2/library/functions.html#sum。
我希望看到sum()
使用下面的代码和s
pdb 中的命令会做什么:
import pdb
def adder(nums):
x = sum(nums)
return x
pdb.set_trace()
print adder([1, 2, 3,4])
Run Code Online (Sandbox Code Playgroud)
小智 6
一些 Python 模块是用 C 编写的(以提高性能),无法在pdb
. 如果您确实想了解这些函数中发生了什么,这是可能的,但并非微不足道。为了检查 C 函数,我通常使用 GNU 调试器 (GDB) 并在启用调试符号的情况下编译 Python。
下载 Python 源代码:https://www.python.org/downloads/
解压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)|run ~/sumtest.py
首先发生的事情是系统提示您进行 PDB 调用。继续使用c
。
下一个中断位于 C 中 sum 函数的中间。您可以使用info locals
列出所有局部变量。就像在 PDB 中c
用于继续执行到下一个断点一样,amds
用于单步执行单个指令。