8

我为 Guile 开发了一个扩展模块,用 C 编写。这个扩展模块嵌入了一个 Python 解释器。

由于此扩展模块调用 Python 解释器,我需要验证它是否正确管理 Python 对象占用的内存。

我发现 Python 解释器在其自己的内存处理中表现良好,因此通过运行 valgrind,如果没有其他干扰因素,我可以发现由于我自己的 Python 解释器嵌入代码中的错误导致的内存泄漏。

但是,当我在 valgrind 下运行 Guile 时,valgrind 报告内存泄漏。由于我自己的代码,此类内存泄漏掩盖了任何内存泄漏。

问题是我可以做些什么来将由于我的代码中的错误导致的内存泄漏与 valgrind 报告的由于 Guile 引起的内存泄漏分开。另一个工具而不是 valgrind?特殊的 valgrind 选项?放弃并依赖手动代码演练?

4

1 回答 1

7

你有几个选择。一种是为 valgrind 编写一个抑制文件,该文件会关闭报告您未处理的内容。Python有这样一个文件,例如: http ://svn.python.org/projects/python/trunk/Misc/valgrind-python.supp

如果 valgrind 不喜欢您的设置,另一种可能性是使用libmudflap; 您使用 编译程序gcc -fmudflap -lmudflap,生成的代码将用于指针调试。在 gcc 文档中描述,在这里: http: //gcc.gnu.org/wiki/Mudflap_Pointer_Debugging

于 2008-09-17T01:38:24.580 回答