Aula 25: gdb — depuração de código nativo e core dumps
Seu programa em C++ trava com um segfault — null pointer dereference, stack overflow, buffer overflow. Como encontrar a linha que causou isso? O gdb (GNU Debugger) é a ferramenta padrão para depurar código nativo no Linux. Ele permite parar em breakpoints, avançar linha por linha, inspecionar valore
O gdb é como um detetive que consegue congelar o tempo. Quando um programa trava, ele pergunta: 'qual era o valor dessa variável no momento da falha? Quem chamou essa função? Onde exatamente estávamos?' Um core dump é uma foto da memória salva no momento da falha — como a foto de uma cena de crime que dá para examinar horas depois do evento ter acontecido.
- gdb (GNU Debugger)
- Debugger padrão para C/C++ no Linux. Permite execução passo a passo, breakpoints, inspeção de variáveis e análise de core dumps.
- ponto de parada (breakpoint)
- Uma instrução para o gdb parar a execução ao chegar numa linha específica do código. Permite inspecionar o estado do programa num ponto exato.
- backtrace (bt)
- Comando do gdb que mostra a call stack atual: a lista de todas as funções chamadas que ainda não retornaram, da mais nova para a mais antiga.
- core dump
- Um ficheiro criado quando um programa trava, contendo uma foto da memória do programa, dos registers e da call stack no momento da falha. O gdb pode analisá-lo post-mortem.
- watchpoint
- Como um breakpoint, mas numa variável: o gdb para toda vez que a variável muda de valor. Útil para descobrir onde no código um valor muda quando não deveria.