Pergunta

Desenvolvo um módulo de extensão para Guile, escrito em C.Este módulo de extensão incorpora um interpretador Python.

Como este módulo de extensão invoca o interpretador Python, preciso verificar se ele gerencia adequadamente a memória ocupada pelos objetos Python.

Descobri que o interpretador Python se comporta bem em seu próprio manuseio de memória, de modo que, ao executar o valgrind, posso encontrar vazamentos de memória devido a bugs no código de incorporação do meu próprio interpretador Python, se não houver outros fatores de interferência.

No entanto, quando executo o Guile no valgrind, o valgrind relata vazamentos de memória.Esses vazamentos de memória obscurecem qualquer vazamento de memória devido ao meu próprio código.

A questão é o que posso fazer para separar vazamentos de memória devido a bugs em meu código dos vazamentos de memória relatados por valgrind como sendo causados ​​por Guile.Outra ferramenta em vez do valgrind?Opções especiais de valgrind?Desistir e confiar no passo a passo manual do código?

Foi útil?

Solução

Você tem algumas opções.Uma é escrever um arquivo de supressão para o valgrind que desative o relatório de coisas nas quais você não está trabalhando.Python possui esse arquivo, por exemplo:http://svn.python.org/projects/python/trunk/Misc/valgrind-python.supp

Se valgrind não gostar da sua configuração, outra possibilidade é usar libmudflap;você compila seu programa com gcc -fmudflap -lmudflap, e o código resultante é instrumentado para depuração de ponteiro.Descrito nos documentos do gcc e aqui: http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top