Ответ 1
Да, вы можете использовать valgrind
с Python. Вам просто нужно использовать файл подавления valgrind, предоставляемый разработчиками Python, поэтому вы не получаете кучу ложных срабатываний из-за функций распределения/перераспределения памяти пользовательского интерфейса Python.
Файл подавления valgrind можно найти здесь: http://svn.python.org/projects/python/trunk/Misc/valgrind-python.supp
ВАЖНО: Вам нужно раскомментировать строки для PyObject_Free и PyObject_Realloc в файле подавления *.
Рекомендуемый синтаксис использования:
$ valgrind --tool=memcheck --suppressions=valgrind-python.supp \
python -E -tt ./my_python_script.py
См. также этот файл README из репозитория SVN Python, который описывает различные способы использования Python с valgrind: http://svn.python.org/projects/python/trunk/Misc/README.valgrind
*. Кроме того, вы можете перекомпилировать Python с отключенным PyMalloc, что позволяет вам улавливать больше утечек памяти, которые не будут отображаться, если вы просто подавите PyMalloc.