我可以使用哪个工具(gdb?xcode?pdb?等)在C-extended python程序中查找内存泄漏?

时间:2014-06-24 00:32:48

标签: python c memory-leaks python-extensions

我正在编写一个包含用C编写的扩展模块的python程序。扩展模块定义了一个在我的程序中不断使用的函数。

我的程序中某处有内存泄漏,但我不知道如何找到它。我试过了 1)安装Valgrind。我不能让这个工作,但是因为我有OSX Mavericks(10.9)而Valgrind只支持OXS 10.7(和10.8有点不稳定)。 2)使用gdb。我似乎无法让gdb运行python脚本,因为我需要在从我的python代码调用的c函数中设置断点。我相信我需要安装python-debuginfo才能做到这一点,但我无法做到。 3)使用pdb。但是,我不知道如何使用pdb调试c代码。

我的程序中是否有一个很好的工具可用于调试内存泄漏?

1 个答案:

答案 0 :(得分:0)

目前随Mac开发工具一起提供的调试器现在是lldb,它取代了gdb。该接口有点类似于gdb。您可以使用Homebrew安装gdb。

调试C扩展的方法就像任何其他共享库一样。调试加载共享库(您的扩展)的可执行文件(python),并设置在可执行文件加载共享库后变为有效的断点。

运行lldb:

lldb /path/to/python -- your_python_script.py

设置一些断点(替换为相关的断点)

(lldb) b some_source_file.c:4343

然后运行,调试器将在断点处停止

(lldb) r

现在您可以正常调试C扩展名。