gdb-pratico/mods/02
2025-04-28 10:51:02 -03:00
..
README.org atualização das partes 1 2 e 3 2025-04-28 10:51:02 -03:00

Curso prático de introdução ao GDB

2. Instalação e configurações de início

Objetivos

  • Como instalar o GDB nas principais distribuições GNU/Linux;
  • Conhecer algumas possibilidades de customização.

Instalação

Debian e derivados

sudo apt update
sudo apt install gdb

O pacote gdb-doc instala o manual do GDB, mas ele não é instalado por padrão no Debian por estar na seção non-free/doc.

O pacote build-essential instala outras ferramentas úteis para desenvolvimento, incluindo o gcc (GNU Compiler Collection), o make e as dependências mais comuns.

sudo apt install build-essential

Fedora e derivados

sudo dnf install gdb

Para um ambiente completo de desenvolvimento:

sudo dnf groupinstall "Development Tools"

Arch Linux e derivados

sudo pacman -S gdb

O grupo base-devel contém ferramentas úteis para compilação e depuração:

sudo pacman -S base-devel

Verificação da instalação

Versão:

gdb --version

Ajuda:

gdb --help

Configurações de início

O GDB pode ser configurado por meio de arquivos de inicialização lidos automaticamente ao iniciar. Esses arquivos permitem predefinir opções úteis, automatizar tarefas e estender o ambiente de depuração.

Configuração por usuário

O arquivo ~/.gdbinit:

O GDB executa esse arquivo sempre que for iniciado, a menos que seja desativado com a opção -nh.

Configuração de exemplo:

set pagination off            # Não pausa a saída do GDB
set confirm off               # Não pede confirmação para alguns comandos
set print pretty on           # Formata a apresentação de structs e arrays
set history save on           # Salva histórico entre seções
set history size 1000         # Tamanho máximo do histórico
set disassembly-flavor intel  # Define a sintaxe Intel na desmontagem de binários

Também pode ser interessante omitir as mensagens de versão no início do GDB, o que é feito no arquivo ~/.config/gdb/gdbearlyinit:

set startup-quietly on

O arquivo gdbearlyinit é carregado antes do GDB executar outros arquivos de início e só recebe definições que afetam o seu próprio comportamento.

Configuração por projeto

Arquivo .gdbinit no diretório do projeto (configuração local):

Se existir um arquivo .gdbinit no diretório corrente, o GDB pode executá-lo, mas isso é bloqueado por padrão:

:~/projeto$ gdb 
Warning: File ".gdbinit" auto-loading has been declined by your `auto-load safe-path'...

Para permitir o carregamento, temos que adicionar o caminho do projeto ao arquivo do usuário:

echo "add-auto-load-safe-path $(pwd)" >> ~/.gdbinit

Isso é muito utilizado para definir breakpoints automáticos, carregar símbolos extras, configurar scripts, etc.

Configuração global

O arquivo de configuração do sistema, /etc/gdb/gdbinit, é lido antes de ~/.gdbinit e pode ser usado para definir opções globais em ambientes compartilhados (ex: laboratórios ou servidores educacionais).

Comandos customizados

Nos arquivos .gdbinit, também é possível definir comandos customizados com a sintaxe:

define COMANDO
    LISTA DE COMANDOS
end
document COMANDO
    DESCRIÇÃO
end

Scripts em Python

É possível estender o GDB usando scripts em Python no .gdbinit, mas isso foge do escopo deste curso.