comandos básicos incluídos na parte 1
This commit is contained in:
parent
6e4727ada1
commit
7085ead45c
1 changed files with 145 additions and 1 deletions
|
@ -27,7 +27,8 @@ em tempo real ou após uma falha, fornecendo recursos como:
|
||||||
|
|
||||||
Por operar em baixo nível, o GDB oferece uma visão detalhada do comportamento
|
Por operar em baixo nível, o GDB oferece uma visão detalhada do comportamento
|
||||||
interno do programa, sendo essencial tanto para o desenvolvimento quanto para
|
interno do programa, sendo essencial tanto para o desenvolvimento quanto para
|
||||||
o diagnóstico de erros complexos.
|
o diagnóstico de erros complexos (isso, sem falar de seu enorme potencial como
|
||||||
|
ferramenta de exploração no aprendizado de sistemas).
|
||||||
|
|
||||||
** O que é depurar (/debugar/)
|
** O que é depurar (/debugar/)
|
||||||
|
|
||||||
|
@ -387,3 +388,146 @@ Para sair do GDB...
|
||||||
(gdb) quit
|
(gdb) quit
|
||||||
:~$
|
:~$
|
||||||
#+end_example
|
#+end_example
|
||||||
|
|
||||||
|
** Opções de início do GDB
|
||||||
|
|
||||||
|
| Comando | Descrição |
|
||||||
|
|--------------------------------+---------------------------------------------------------------------------------------|
|
||||||
|
| =gdb --help= | Listas todas as opções de linha de comando com uma breve explicação. |
|
||||||
|
| =gdb= | Iniciar o GDB sem arquivos para depurar. |
|
||||||
|
| =gdb PROGRAMA= | Inciar o GDB para depurar =PROGRAMA=. |
|
||||||
|
| =gdb PROGRAMA DESPEJO= | Inciar o GDB para depurar =PROGRAMA= e salvar o conteúdo da memória no arquivo =DESPEJO=. |
|
||||||
|
| =gdb --args PROGRAMA ARGUMENTOS= | Iniciar o GDB para depurar =PROGRAMA= passando =ARGUMENTOS=. |
|
||||||
|
| =gdb PROGRAMA -d DIR= | Iniciar GDB para depurar =PROGRAMA= utilizando =DIR= para localizar os fontes. |
|
||||||
|
|
||||||
|
** Comandos Básicos
|
||||||
|
|
||||||
|
As próximas tabelas listam os comandos mais relevantes para quem está começando
|
||||||
|
a aprender a utilizar o GDB, mas tenha sempre em mente que há muitos outros comandos
|
||||||
|
e funcionalidades.
|
||||||
|
|
||||||
|
*** Sair do GDB
|
||||||
|
|
||||||
|
| Comando | Descrição |
|
||||||
|
|-----------+---------------------------------------------|
|
||||||
|
| =quit= ou =q= | Sair do GDB |
|
||||||
|
| =Ctrl+D= | Terminar o shell de comandos (sair do GDB). |
|
||||||
|
|
||||||
|
*** Informações
|
||||||
|
|
||||||
|
| Comando | Descrição |
|
||||||
|
|---------------------+----------------------------------------------------------------------------|
|
||||||
|
| =help= ou =h= | Exibe ajuda e tópicos relacionados a um dado comando. |
|
||||||
|
| =apropos REGEX= | Busca comandos segundo a expressão regular =REGEX=. |
|
||||||
|
| =show DEF= | Exibe informações sobre a definição de configuração =DEF= do depurador. |
|
||||||
|
| =print=, =inspect= ou =p= | Imprime o valor de uma expressão. |
|
||||||
|
| =info=, =inf= ou =i= | Exibe informações relacionadas ao programa sendo depurado. |
|
||||||
|
| =x/FORMATO ENDEREÇO= | Examina o conteúdo da memória em um dado =ENDEREÇO= no =FORMATO= especificado. |
|
||||||
|
|
||||||
|
*** Arquivos
|
||||||
|
|
||||||
|
| Comando | Descrição |
|
||||||
|
|----------------+-------------------------------------------------------------------------|
|
||||||
|
| =file ARQUIVO= | Utiliza =ARQUIVO= como caminho do executável e fonte de símbolos. |
|
||||||
|
| =exec ARQUIVO= | Utiliza =ARQUIVO= apenas como caminho do executável a ser depurado. |
|
||||||
|
| =symbol ARQUIVO= | Utiliza =ARQUIVO= apenas como fonte de símbolos. |
|
||||||
|
| =dir DIR= | Adiciona =DIR= ao início da lista de caminhos de busca por códigos-fonte. |
|
||||||
|
|
||||||
|
*** Execução
|
||||||
|
|
||||||
|
| Comando | Descrição |
|
||||||
|
|---------------+-------------------------------------------------------------------------------------------------|
|
||||||
|
| =run= ou =r= | Inicia a execução do programa com uma lista opcional de argumentos. |
|
||||||
|
| =kill= | Mata a execução do programa sendo depurado. |
|
||||||
|
| =continue= ou =c= | Continua a execução após uma condição de parada. |
|
||||||
|
| =step= ou =s= | Executa a próxima linha do programa, mesmo que esteja numa função ou sub-rotina. |
|
||||||
|
| =next= ou =n= | Executa a próxima linha do código sem entrar em funções ou sub-rotinas. |
|
||||||
|
| =jump= ou =j= | Salta a execução do programa para uma localização dada na forma de um endereço ou de uma linha. |
|
||||||
|
|
||||||
|
*** Pontos de parada
|
||||||
|
|
||||||
|
| Comando | Descrição |
|
||||||
|
|---------------+---------------------------------------------------------------------------------------|
|
||||||
|
| =break= ou =b= | Define o ponto de parada em um dado endereço, número de linha ou símbolo. |
|
||||||
|
| =watch EXP= | Define uma parada para observar alterações de valores na expressão =EXP=. |
|
||||||
|
| =catch EVENTO= | Define uma parada na ocorrência de um dado =EVENTO=. |
|
||||||
|
| =i breakpoints= | Lista informações sobre todos os pontos de parada. |
|
||||||
|
| =del [IDs]= | Deleta todos os pontos de parada ou os pontos de parada identificados pelo número =ID=. |
|
||||||
|
|
||||||
|
*** Inspeção da pilha de execução
|
||||||
|
|
||||||
|
| Comando | Descrição |
|
||||||
|
|-------------------------+-------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| =backtrace= ou =bt= | Exibe todos os quadros de chamadas de funções na pilha. |
|
||||||
|
| =info frame [SUBCOMANDO]= | Exibe informações sobre o quadro de pilha selecionado ou, com =SUBCOMANDOS=, possibilita a especificação de um modo de seleção. |
|
||||||
|
|
||||||
|
*** Informações sobre processos
|
||||||
|
|
||||||
|
Sintaxe geral:
|
||||||
|
|
||||||
|
#+begin_example
|
||||||
|
info proc [SUBCOMANDO][PID]
|
||||||
|
#+end_example
|
||||||
|
|
||||||
|
Onde:
|
||||||
|
|
||||||
|
- =SUBCOMANDO=: uma informação específica sobre um dado processo.
|
||||||
|
- =PID=: número de identificação de um processo qualquer.
|
||||||
|
|
||||||
|
Se =PID= não for informado, será utilizado o PID do programa em depuração.
|
||||||
|
|
||||||
|
| Comando | Descrição |
|
||||||
|
|--------------------------+---------------------------------------------------------------------------------------|
|
||||||
|
| =info proc [PID]= | Exibe a linha de comando, o diretório corrente e o caminho do executável do processo. |
|
||||||
|
| =info proc all [PID]= | Exibe todas as informações disponíveis sobre o processo. |
|
||||||
|
| =info proc files [PID]= | Lista todos os arquivos abertos pelo processo. |
|
||||||
|
| =info proc mappings [PID]= | Lista todas as regiões de memória mapeadas para o processo. |
|
||||||
|
|
||||||
|
*** Modos de exibição
|
||||||
|
|
||||||
|
| Comando | Descrição |
|
||||||
|
|-------------------------------+----------------------------------------------------------------------------------------------------|
|
||||||
|
| =tui enable= | Entra no modo TUI. |
|
||||||
|
| =tui disable= | Sai do modo TUI. |
|
||||||
|
| =layout asm= | Entra no modo TUI com a janela da desmontagem do programa em assembly. |
|
||||||
|
| =layout src= | Entra no modo TUI com a janela do código-fonte do programa. |
|
||||||
|
| =layout regs= | Entra no modo TUI com as janelas de registradores e de código-fonte ou de desmontagem do programa. |
|
||||||
|
| =layout split= | Entra no modo TUI com as janelas de código-fonte e desmontagem do programa. |
|
||||||
|
| =layout next= | Muda para o próximo layout TUI. |
|
||||||
|
| =layout prev= | Muda para o layout TUI anterior. |
|
||||||
|
| =tui new-layout NOME DEFINIÇÃO= | Define um novo layout customizado. |
|
||||||
|
|
||||||
|
Notas:
|
||||||
|
|
||||||
|
- Nós podemos alternar o modo TUI com o atalho =C-x a=;
|
||||||
|
- Todos os comandos =layout ...= são abreviações de =tui layout ...=;
|
||||||
|
- Todos os layouts TUI padrão são compostos por janelas, uma barra de status e uma janela de comandos;
|
||||||
|
- Nós podemos circular pelas janelas do modo TUI com o atalho =C-x o=;
|
||||||
|
- Os layouts customizados não são salvos entre sessões do GDB, mas podem ser definidos nos seus arquivos de início.
|
||||||
|
|
||||||
|
Exemplo de layout customizado:
|
||||||
|
|
||||||
|
#+begin_example
|
||||||
|
(gdb) tui new-layout only-regs regs 1 status 0 cmd 1
|
||||||
|
(gdb) layout
|
||||||
|
List of tui layout subcommands:
|
||||||
|
|
||||||
|
tui layout asm -- Apply the "asm" layout.
|
||||||
|
tui layout next -- Apply the next TUI layout.
|
||||||
|
tui layout only-regs -- Apply the "only-regs" layout.
|
||||||
|
tui layout prev -- Apply the previous TUI layout.
|
||||||
|
tui layout regs -- Apply the TUI register layout.
|
||||||
|
tui layout split -- Apply the "split" layout.
|
||||||
|
tui layout src -- Apply the "src" layout.
|
||||||
|
|
||||||
|
[...]
|
||||||
|
(gdb)
|
||||||
|
#+end_example
|
||||||
|
|
||||||
|
Outras combinações de teclas para o modo TUI:
|
||||||
|
|
||||||
|
| Teclas | Descrição |
|
||||||
|
|--------+------------------------------------------------------|
|
||||||
|
| =C-x 1= | No layout /split/, exibir apenas a janela selecionada. |
|
||||||
|
| =C-x 2= | Utiliza pelo menos duas janelas no modo TUI. |
|
||||||
|
| =C-l= | Redesenha as janelas no modo TUI. |
|
||||||
|
|
Loading…
Add table
Reference in a new issue