Comment puis-je utiliser valgrind avec Python extensions C++?
J'ai extensions Python mis en œuvre sur des classes C++. Je n'ai pas de cible C++ pour exécuter avec valgrind. Je veux utiliser valgrind pour la mémoire.
Puis-je utiliser valgrind avec Python?
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez utiliser
valgrind
avec Python. Vous avez juste besoin d'utiliser valgrind suppression de fichier fourni par les développeurs Python, si vous n'obtenez pas un tas de faux positifs en raison de Python personnalisé de la mémoire allocation/réallocation des fonctions.La valgrind suppression de fichier peut être trouvé ici: http://svn.python.org/projects/python/trunk/Misc/valgrind-python.supp
IMPORTANT: Vous devez décommenter les lignes pour PyObject_Free et PyObject_Realloc dans la suppression de fichier*.
L'a recommandé l'utilisation de la syntaxe est:
Voir aussi ce fichier lisez-moi de l'Python repo SVN qui décrit les différentes manières d'utiliser Python avec valgrind:
http://svn.python.org/projects/python/trunk/Misc/README.valgrind
* - Alternativement, vous pouvez recompiler Python avec PyMalloc désactivé, ce qui vous permet de capturer plus de fuites de mémoire qui n'apparaissent pas si vous venez de supprimer PyMalloc.
Misc/valgrind-python.supp
que de supprimer les mises en garde pourPyObject_Free
etPyObject_Realloc
?En Python 2.7 et 3.2, il existe désormais une
--with-valgrind
au moment de la compilation indicateur qui permet à l'interpréteur Python pour détecter le moment où il s'exécute sous valgrind et désactive PyMalloc. Cela devrait vous permettre de mieux contrôler vos allocations de mémoire que sinon, comme PyMalloc juste alloue de la mémoire en gros morceaux.Oui, vous pouvez: vous ne avez une cible à exécuter avec valgrind -- c'est l'interpréteur python lui-même:
Cependant, les résultats de ci-dessus peut ne pas être très satisfaisant -- Python est construit en opt mode et avec un malloc, qui peut vous noyer dans les faux positifs.
Vous aurez probablement obtenir de meilleurs résultats en premier bâtiment d'une version de débogage Python. Début ici.