Skip to content

Instantly share code, notes, and snippets.

@MatheusFaria
Created August 22, 2017 20:49
Show Gist options
  • Save MatheusFaria/4b3a5a2bbf3a046356ab71bd7302d626 to your computer and use it in GitHub Desktop.
Save MatheusFaria/4b3a5a2bbf3a046356ab71bd7302d626 to your computer and use it in GitHub Desktop.
Prática com o GDB

Prática com o GDB

Para executar o programa recursao.c :

$ make recursao
$ gdb ./recursao

Assim que executar o gdb, ele abrirá um terminal especial onde você pode inspecionar o estado da execução do seu programa.

Insira os breakpoints onde você quer que a execução pare para que você possa fazer alguma análise ou inspeção. O comando de inserir breakpoints é b e o número da linha.

b 2
b 3
b 7
b 8
b 12
b 13
b 14
b 15

Para rodar o seu programa no GDB, utilize o comando r de run.

r

Quando o seu programa executar, ele vai executar até o fim OU até chegar em um breakpoint. Quando ele chegar em um breakpoint você tem várias opções para inspecionar o seu programa no estado atual. Dentre elas você pode utilizar:

  • l : para mostrar o código que está executando agora.
  • info locals : para mostrar todas as variáveis locals e seus valores do frame atual
  • bt : para imprimir a pilha de chamadas de funções
  • info frame 0: para mostrar o que stack frame no stack frame da posição 0. As posições vão obdecer as posições que você viu no comando bt.
  • f 0: para trocar de frame na pilha de chamadas. Onde 0 é a posição do frame que você quer ir.
  • p xyz: para imprimir o valor da variavel xyz

Quando você terminar sua análise, você pode utlizar o comando c para continuar a execução até o próximo breakpoint.

c

Ao finalizar tudo, você pode utilizar o comando q para sair do GDB.

q

Se em algum momento do seu programa você não precisar mais dos breakpoints, e quiser que o programa execute sem eles até o final, você pode utilizar o comando clear para limpar todos os breakpoints.

clear

Se você deseja ver o assembly que o seu código gerou, juntamente com o endereço de cada instrução, você pode utilizar o comando layout asm. Para sair do modo layout utilize o atalho Ctrl + x a.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment