Si estás desarrollando una extensión en C para Python y quieres detectar fugas de memoria u otros errores, puedes usar Valgrind. Sin embargo, Python por defecto hace muchas asignaciones y liberaciones de memoria que generan falsos positivos en Valgrind.
Ejecutar:
valgrind python mi_script.py
--trace-children=yes y PYTHONMALLOCExporta la variable de entorno para que Python use malloc estándar:
export PYTHONMALLOC=malloc
Ejecuta Valgrind con las opciones:
valgrind –tool=memcheck –leak-check=full \
–show-reachable=yes –track-origins=yes \
python mi_script.py
--leak-check=full → informa todas las fugas de memoria
--show-reachable=yes → muestra memoria que sigue siendo accesible al terminar
--track-origins=yes → ayuda a encontrar dónde se asignó la memoria
Si tu extensión C se llama mi_modulo.so, asegúrate de importarla primero en el script Python para que Valgrind la analice correctamente.
Los mensajes de Valgrind relacionados con internals de Python pueden ignorarse; concéntrate en las llamadas hechas por tu código C.
Puedes combinarlo con gdb si quieres depurar fallos de segmentación.
