Valgrind和pexpect

你好,
我正在使用pexpect模块在测试中产生一些过程
环境. pexpect在内部使用os.execv.我需要做的是
Valgrind Python并从产卵的孩子那里获取记忆泄漏
(假设Python不会泄漏:)).
这是一个简单的测试柜:
==================
泄漏:C:
==================
#include
#include
int main()
{
int *i =(int *)malloc(sizeof(int));
*i = 7;
printf(" *i =%d \ n", *i);
返回0;
}
==================
Leak.py:
==================
导入pexpect
导入系统
child = pexpect.spawn('./泄漏')
child.expect('\*i =');
打印"完成"
==================
valgrind命令:
==================
valgrind-lileak-check = full-trace-children = yes -tool = memcheck
- 抑制= valgrind-python.supp python ./leak.py
== 30239 == memcheck,内存错误检测器.
== 30239 ==版权(c)2002-2006和julian Seward等人的GNU GPL'D.
== 30239 ==使用Libvex Rev 1658,用于动态二进制翻译的库.
== 30239 ==版权(C)2004-2006和GNU GPL'D,由OpenWorks LLP制作.
== 30239 ==使用valgrind-3.2.1-debian,一个动态二进制
仪器框架.
== 30239 ==版权(c)2000-2006和julian Seward等人的GNU GPL'D.
== 30239 ==有关更多详细信息,请重新运行:-v
== 30239 ==
完毕
== 30239 ==
== 30239 ==错误摘要:0来自0上下文的错误(抑制:1092从8)
== 30239 == malloc/free:在出口时使用:140个块中的702,546字节.
== 30239 == malloc/free:2,314个Allocs,2,174 Frees,1,929,320字节分配.
== 30239 ==对于检测到的错误计数,重新运行:-v
== 30239 ==寻找指针到140个未交布的块.
== 30239 ==检查1,069,436字节.
== 30239 ==
== 30239 ==泄漏摘要:
== 30239 ==绝对丢失:0块中的0字节.
== 30239 ==可能丢失了:0块中的0字节.
== 30239 ==仍然可以到达:138个块中的699,710字节.
== 30239 ==抑制:2块中的2,836字节.
== 30239 ==未达到的块(未找到指针的块).
== 30239 ==看到它们,重新运行:-show-reachable = yes
如您所见,未报告泄漏的4个字节.这
我使用的抑制文件取自:http://svn.python.org/projects/pytho...nd-python.supp
我已经删除了与pyobject_free和
PyObject_realloc,如那里所述.
那么,有人知道正确的方法是什么?
提前致谢,
萨尔瓦罗.
- -
Salvatore Iovene http://www.iovene.com/
钥匙指纹:5647 944D D5AD 2E87 00B4 7D54 2864 359D FF20 16D8

标签: python

添加新评论