How can I use valgrind with Python C++ extensions?

前端 未结 3 1506
感情败类
感情败类 2020-11-30 00:14

I have Python extensions implemented on C++ classes. I don\'t have a C++ target to run valgrind with. I want to use valgrind for memory check.

Can I use valgrind wi

3条回答
  •  迷失自我
    2020-11-30 00:35

    Yes, you can use valgrind with Python. You just need to use the valgrind suppression file provided by the Python developers, so you don't get a bunch of false positives due to Python's custom memory allocation/reallocation functions.

    The valgrind suppression file can be found here: http://svn.python.org/projects/python/trunk/Misc/valgrind-python.supp

    IMPORTANT: You need to uncomment the lines for PyObject_Free and PyObject_Realloc in the suppression file*.

    The recommended usage syntax is:

    $ valgrind --tool=memcheck --suppressions=valgrind-python.supp \
                                              python -E -tt ./my_python_script.py
    

    See also this README file from the Python SVN repo which describes the different ways of using Python with valgrind: http://svn.python.org/projects/python/trunk/Misc/README.valgrind

    * - Alternatively, you can recompile Python with PyMalloc disabled, which allows you to catch more memory leaks that won't show up if you just suppress PyMalloc.

提交回复
热议问题