gdb-pratico/mods/02/README.org

155 lines
3.8 KiB
Org Mode
Raw Normal View History

2025-04-26 11:25:11 -03:00
#+title: Curso prático de introdução ao GDB
#+author: Blau Araujo
#+email: blau@debxp.org
* 2. Instalação e configurações de início
2025-04-28 10:51:02 -03:00
** Objetivos
- Como instalar o GDB nas principais distribuições GNU/Linux;
- Conhecer algumas possibilidades de customização.
2025-04-26 11:25:11 -03:00
** Instalação
*** Debian e derivados
#+begin_example
sudo apt update
sudo apt install gdb
#+end_example
#+begin_quote
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=.
#+end_quote
O pacote =build-essential= instala outras ferramentas úteis para desenvolvimento,
incluindo o =gcc= (/GNU Compiler Collection/), o =make= e as dependências mais comuns.
#+begin_example
sudo apt install build-essential
#+end_example
*** Fedora e derivados
#+begin_example
sudo dnf install gdb
#+end_example
Para um ambiente completo de desenvolvimento:
#+begin_example
sudo dnf groupinstall "Development Tools"
#+end_example
*** Arch Linux e derivados
#+begin_example
sudo pacman -S gdb
#+end_example
O grupo =base-devel= contém ferramentas úteis para compilação e depuração:
#+begin_example
sudo pacman -S base-devel
#+end_example
*** Verificação da instalação
Versão:
#+begin_example
gdb --version
#+end_example
Ajuda:
#+begin_example
gdb --help
#+end_example
** 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:
#+begin_src gdb
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
#+end_src
Também pode ser interessante omitir as mensagens de versão no início do GDB,
o que é feito no arquivo =~/.config/gdb/gdbearlyinit=:
#+begin_example
set startup-quietly on
#+end_example
#+begin_quote
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.
#+end_quote
*** 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:
#+begin_example
:~/projeto$ gdb
Warning: File ".gdbinit" auto-loading has been declined by your `auto-load safe-path'...
#+end_example
Para permitir o carregamento, temos que adicionar o caminho do projeto ao
arquivo do usuário:
#+begin_src sh
echo "add-auto-load-safe-path $(pwd)" >> ~/.gdbinit
#+end_src
#+begin_quote
Isso é muito utilizado para definir /breakpoints/ automáticos, carregar símbolos
extras, configurar scripts, etc.
#+end_quote
*** 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:
#+begin_example
define COMANDO
LISTA DE COMANDOS
end
document COMANDO
DESCRIÇÃO
end
#+end_example
*** Scripts em Python
É possível estender o GDB usando scripts em Python no =.gdbinit=, mas isso
foge do escopo deste curso.