Valgrind-3.22.0

Introdução ao Valgrind

"Valgrind" é uma estrutura de instrumentação para construir ferramentas dinâmicas de análise. Existem ferramentas "Valgrind" que conseguem detectar automaticamente muitos defeitos de gerenciamento de memória e de camadas e perfilar aplicativos em detalhes. "Valgrind" também pode ser usado para construir novas ferramentas.

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.1.

Informação do Pacote

  • Transferência (HTTP): https://sourceware.org/pub/valgrind/valgrind-3.22.0.tar.bz2

  • Transferência (FTP):

  • Soma de verificação MD5 da transferência: 38ea14f567efa09687a822b33b4d9d60

  • Tamanho da transferência: 16 MB

  • Espaço em disco estimado exigido: 390 MB (adicionar 66 MB para testes)

  • Tempo de construção estimado: 0,5 UPC (adicionar 6,8 UPC para testes; ambos usando paralelismo=4)

Transferências Adicionais

Dependências do "Valgrind"

Opcionais

GDB-14.1 (para os testes), LLVM-17.0.6 (com "Clang") e Which-2.21 (para os testes)

Instalação do Valgrind

Primeiro, faça várias mudanças que são exigidas para Valgrind funcionar em sistemas com glibc-2.39 e binutils-2.42 instalados:

patch -Np1 -i ../valgrind-3.22.0-upstream_fixes-1.patch

Instale "Valgrind" executando os seguintes comandos:

sed -i 's|/doc/valgrind||' docs/Makefile.in &&

./configure --prefix=/usr \
           --datadir=/usr/share/doc/valgrind-3.22.0 &&
make

Para testar os resultados, emita: "make regtest". Os testes possivelmente travem para sempre se "GDB-14.1" não estiver instalado. Alguns testes também são conhecidos por travarem, dependendo da versão da "glibc". Alguns testes podem falhar em várias suítes. Testes problemáticos podem ser desabilitados mudando-se a linha "prereq:" no arquivo ".vgtest" correspondente para "prereq: false". Por exemplo:

sed -e 's@prereq:.*@prereq: false@' \
   -i {helgrind,drd}/tests/pth_cond_destroy_busy.vgtest
[Nota]

Nota

Os testes "OpenMP" serão pulados se a "libgomp" tiver sido compilada com "--enable-linux-futex" (o padrão). Se necessário, apenas recompile a biblioteca "libgomp" originária da árvore de construção do "gcc", passando "--disable-linux-futex" para configurar, armazenando a biblioteca em algum lugar e mudando o link de "/usr/lib/libgomp.so.1" para apontar para a nova biblioteca.

Agora, como o(a) usuário(a) "root":

make install

Explicações do Comando

sed -i ... docs/Makefile.in : Esse "sed" fornece a instalação da documentação em um diretório versionado.

--enable-lto=yes: Essa opção permite construir "Valgrind" com "Link Time Optimization" ("LTO"). Isso produz um "Valgrind" menor/mais rápido (até 10%), mas o tempo de construção aumenta para cerca de 5,5 UPC.

Conteúdo

Aplicativos Instalados: callgrind_annotate, callgrind_control, cg_annotate, cg_diff, cg_merge, ms_print, valgrind, valgrind-di-server, valgrind-listener e vgdb
Bibliotecas Instaladas: Nenhum(a)
Diretórios Instalados: /usr/lib/valgrind, /usr/libexec/valgrind, /usr/include/valgrind e /usr/share/doc/valgrind-3.22.0

Descrições Curtas

valgrind

é um aplicativo para depuração e perfilamento de executáveis "Linux"

callgrind_annotate

pega um arquivo de saída produzido pela ferramenta "Callgrind" do "Valgrind" e imprime as informações em um formato de fácil leitura

callgrind_control

controla aplicativos sendo executados pela ferramenta "Callgrind" do "Valgrind"

cg_annotate

é uma ferramenta de pós-processamento para a ferramenta "Cachegrind" do "Valgrind"

cg_diff

compara dois arquivos de saída gerada do "Cachegrind"

cg_merge

mescla vários arquivos de saída gerada do "Cachegrind" em um

ms_print

pega um arquivo de saída produzido pela ferramenta "Massif" do "Valgrind" e imprime as informações em um formato de fácil leitura

valgrind-di-server

é um servidor que lê informações de depuração oriundas de objetos armazenados em uma máquina diferente

valgrind-listener

escuta em um soquete os comentários do "Valgrind"

vgdb

é um intermediário entre "Valgrind" e "GDB" ou um "shell"