相关疑难解决方法(0)

如何使用valgrind与python?

我正在尝试memcheck我写的C python扩展,但是我在设置valgrind以使用python时遇到了麻烦.我真的很感激一些建议.仅供上下文使用,这是Ubuntu 13.10,python 2.7.5+和valgrind 3.8.1.

根据Readme.valgrind我的建议,我做了以下.

1)用.下载python源码

sudo apt-get build-dep python2.7
apt-get source python2.7
Run Code Online (Sandbox Code Playgroud)

2)应用代码补丁,即"在Objects/obmalloc.c中取消注释Py_USING_MEMORY_DEBUGGER".

3)应用抑制补丁,即"取消注释Misc/valgrind-python.supp中的行,以抑制PyObject_Free和PyObject_Realloc的警告"

4)编译python与

./configure --prefix=/home/dejan/workspace/python --without-pymalloc
make -j4 install
Run Code Online (Sandbox Code Playgroud)

请注意,我做了2和3,而README.valgrind说做2或3 ...更多不能伤害.

现在,让我们在一些示例python代码中对此进行测试 test.py

print "Test"
Run Code Online (Sandbox Code Playgroud)

让我们用这个脚本在python上运行valgrind

valgrind --tool=memcheck --leak-check=full --suppressions=python2.7-2.7.5/Misc/valgrind-python.supp bin/python test.py
Run Code Online (Sandbox Code Playgroud)

出乎意料的是,仍然有来自valgrind的大量报告,其中第一个报告(以及更多关注报告)

==27944== HEAP SUMMARY:
==27944==     in use at exit: 857,932 bytes in 5,144 blocks  
==27944==   total heap usage: 22,766 allocs, 17,622 frees, 4,276,934 bytes allocated
==27944== 
==27944== 38 bytes in 1 blocks are possibly lost in loss record 24 of 1,343
==27944== …
Run Code Online (Sandbox Code Playgroud)

python valgrind memory-leaks

45
推荐指数
2
解决办法
3万
查看次数

标签 统计

memory-leaks ×1

python ×1

valgrind ×1