semestre_2/Introdução à Análise de Alg.../Correção.md

61 lines
2.2 KiB
Markdown

# Correção
- Identificar invariáveis
- Inicialização
- Manutenção
- Término
## Anotações GDB
- Compilar um programa com a flag `-g` faz com que este programa armazene seu código fonte, permitindo-o ser debugado em sua execução.
- Para se debugar um programa, chama-se este com o comando `gdb` no terminal.
- `run` roda o programa.
- `layout next` muda a forma de exibição da interface.
- `refresh` atualiza a interface.
- `next`, ou `n`, avança o programa em uma linha de comando *no escopo atual*.
- `print`, ou apenas `p`, pode ser utilizado para realizar calculos aritméticos com o valor de variáveis.
- `print var` apresenta o valor da variável var.
- `print vector@x` apresenta os primeiros `x` valores de um vetor `vector`.
- `print *vector@x` apresenta os valores apontados por um vetor de ponteiros `vector`.
- `step` avança o programa em uma linha de comando *no escopo global*, entrando em funções, etc.
- `break x` coloca um ponto de interrupção da execução na linha `x`.
- `break function` coloca um ponto de interrupção da execução no início de uma função `function`.
- `info break` lista todos os pontos de interrupção;
- `del x` apaga o breakpoint de número `x`, tal qual descrito por `info break`.
- `clear function` retira os pontos de interrupção colocados na função `function`.
- `display i` para cada comando seguinte, mostrar o valor de `i`. `undisplay n` cessa este comportamento para a variável de índice `n`.
- `watch [expressão]` (*watchpoint*) interrompe a execução do programa toda vez que o valor de uma expressão se altera.
- `whatis i`, ou `what i`, mostra o tipo da variável `i`.
- `backtrace` (`bt`) no caso de um Segmentation Fault, aponta-se a linha em que este ocorreu e os valores das variáveis à este ponto.
- `finish` executa a função atual e interrompe a execução quando esta termina, indicando onde no código esta retorna e com qual valor.
- `quit` sai do debugger.
## Comandos avançados
- `target record-full` grava a execução e permite voltar para passos anteriores com `reverse-next`, `reverse-step`, `reverse-continue` (`rn`, `rs`).
- `set var i = x` altera o valor da variável `i` para `x` e permite a continuidade da execução do código.