如何检查Guile扩展模块中的内存泄漏?

2024-06-01 03:55:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

然而,当我在valgrind下运行Guile时,valgrind报告内存泄漏。这种内存泄漏掩盖了由于我自己的代码而导致的任何内存泄漏。在

问题是我能做些什么来区分由于代码中的错误而导致的内存泄漏和valgrind报告的由Guile引起的内存泄漏。另一种工具而不是瓦尔格林?特殊valgrind选项?放弃并依赖手动代码演练?在


Tags: 模块工具对象内存代码选项报告错误
1条回答
网友
1楼 · 发布于 2024-06-01 03:55:19

你有几个选择。一种方法是为valgrind编写一个supersions文件,关闭您不在处理的内容的报告。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

相关问题 更多 >