conteúdo da parte 2
This commit is contained in:
parent
ebb4065a8b
commit
e7e8e524df
1 changed files with 149 additions and 0 deletions
149
mods/02/README.org
Normal file
149
mods/02/README.org
Normal file
|
@ -0,0 +1,149 @@
|
|||
#+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
|
||||
|
||||
** 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.
|
Loading…
Add table
Reference in a new issue