GDB-17.1

Introdução ao GDB

GDB, o depurador do Projeto "GNU", permite que você veja o que está acontecendo dentro de outro aplicativo enquanto ele é executado - ou o que outro aplicativo estava fazendo no momento em que travou. Observe que GDB é mais eficaz ao rastrear aplicativos e bibliotecas que foram construídos(as) com símbolos de depuração e não despojados(as).

[Nota]

Nota

Esse pacote é conhecido por construir e funcionar adequadamente usando-se uma plataforma LFS 13.0.

Informação do Pacote

  • Transferência (HTTP): https://ftpmirror.gnu.org/gdb/gdb-17.1.tar.xz

  • Transferência (FTP):

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

  • Tamanho da transferência: 24 MB

  • Espaço em disco estimado exigido: 888 MB (adicionar 824 MB para documentos; adicionar 7,8 GB para testes)

  • Tempo de construção estimado: 1,2 UPC (adicionar 0,4 UPC para documentos; adicionar 12,0 UPC testes; todos usando paralelismo=8)

Dependências do GDB

Dependência Recomendada de Tempo de Execução

Opcionais

Doxygen-1.16.1, GCC-15.2.0 (ada, gfortran e go são usados para testes), Guile-3.0.11, rustc-1.93.1 (usado para alguns testes), Valgrind-3.26.0 e SystemTap (tempo de execução, usado para testes)

Instalação do GDB

Instale o GDB executando os seguintes comandos:

mkdir build &&
cd    build &&

../configure --prefix=/usr          \
             --with-system-readline \
             --with-system-zlib     \
             --with-python=/usr/bin/python3 &&
make

Opcionalmente, para construir a documentação da "API" usando Doxygen-1.16.1, execute:

make -C gdb/doc doxy

Executar os testes não é recomendado. Os resultados variam muito dependendo da arquitetura do sistema e de quais dependências opcionais estão instaladas e qual versão do GCC está sendo usada. Em um sistema testado, existiram 140 falhas inesperadas (de mais de 108.000 testes) e em outro sistema existiram “somente” 14 falhas inesperadas. O tempo para executar os testes varia de aproximadamente 3 UPC a mais de 15 UPC ao usar -j8. Isso depende do número de testes que expiram, assim como de outros fatores.

[Dica]

Dica

Com um make check simples, existem muitas mensagens de aviso acerca de um arquivo de configuração global ausente. Essas podem ser evitadas executando-se touch global.exp e antepondo-se ao comando make check DEJAGNU=$PWD/global.exp. Além disso, os testes podem ser consideravelmente acelerados usando-se a opção do make "-j<N>", onde <N> é o número de núcleos em teu sistema. Às vezes, porém, usar paralelismo possivelmente resulte em falhas estranhas.

Para testar os resultados de qualquer forma, emita:

pushd gdb/testsuite &&
make  site.exp      &&
echo  "set gdb_test_timeout 30" >> site.exp &&
make check 2>1 | tee gdb-check.log
popd

Veja-se gdb/testsuite/README e TestingGDB. Existem muitos problemas adicionais com a suíte de teste:

  • Diretórios limpos são necessários se reexecutar-se os testes. Por esse motivo, produza uma cópia do diretório do código-fonte compilado antes dos testes, caso precise executar os testes novamente.

  • Os resultados também podem depender dos compiladores instalados.

  • Em alguns sistemas baseados em "AMD", mais que duzentos (200) testes adicionais possivelmente falhem devido a uma diferença na implementação de camadas nessas "CPUs".

  • Para o gdb-17.1, usando um Intel i7-14700K, existiram 120 falhas inesperadas e mais de 126.500 testes passaram.

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

make -C gdb install &&
make -C gdbserver install

Se você construiu a documentação da "API", [então] ela agora está em "gdb/doc/doxy". Você consegue instalá-la (como o(a) usuário(a) root):

install -d /usr/share/doc/gdb-17.1 &&
rm -rf gdb/doc/doxy/xml &&
cp -Rv gdb/doc/doxy /usr/share/doc/gdb-17.1

Explicações do Comando

--with-system-readline: Essa chave força o GDB a usar a cópia do Readline instalada no LFS.

--with-system-zlib: Essa chave força o GDB a usar a cópia do Zlib instalada no LFS.

--with-python=/usr/bin/python3: Essa chave força GDB a usar Python 3.

Conteúdo

Aplicativos Instalados: gcore, gdb, gdbserver, gdb-add-index e gstack
Biblioteca Instalada: libinproctrace.so
Diretórios Instalados: /usr/{include,share}/gdb e /usr/share/doc/gdb-17.1

Descrições Curtas

gcore

gera um despejo principal de um aplicativo em execução

gdb

é o Depurador GNU

gdbserver

é um servidor remoto para o depurador "GNU" (permite que aplicativos sejam depurados a partir de uma máquina diferente)

gdb-add-index

Permite adicionar arquivos de índice a binários ELF. Isso acelera o início do gdb em aplicativos grandes.

gstack

imprime um rastreamento de pilha a partir de um programa que esteja executando atualmente

libinproctrace.so

contém funções para o agente de rastreamento em processo. O agente permite instalar pontos de rastreamento rápidos, listar marcadores de pontos de rastreamento estáticos, sondar marcadores de pontos de rastreamento estáticos e iniciar o monitoramento de rastreamento.