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
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.