Uso de gdb e lldb
Percorra os programas passo a passo
Uso de gdb e lldb é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.
Depuradores interativos
gdb (GNU) e lldb (LLVM) permitem pausar um programa em execução, inspecionar variáveis e percorrer o código linha por linha. Os comandos são semelhantes.
Compile com informações de depuração
Sempre compile com -g (e, idealmente, com -O0) para que o depurador possa relacionar o código de máquina ao código-fonte.
g++ -g -O0 main.cpp -o app
# then
gdb ./appDefinindo pontos de interrupção
Um ponto de interrupção pausa a execução em um local escolhido.
- gdb:
break main.cpp:10oubreak myFunc - lldb:
breakpoint set --file main.cpp --line 10oub myFunc
Executando o programa
Inicie a execução com run (ou r). O programa para no primeiro ponto de interrupção que encontrar, pronto para ser inspecionado.
Percorrendo o código
Comandos principais para percorrer o código (com os mesmos nomes no gdb e no lldb):
next/n: executa uma linha, passando por cima das chamadasstep/s: entra em uma chamadafinish: executa até que a função atual retornecontinue/c: retoma a execução até o próximo ponto de interrupção
Inspecionando variáveis
Imprima valores para entender o estado do programa.
- gdb:
print x,print arr[2] - lldb:
frame variableoup x
Um alvo de sessão de exemplo
Considere este programa; você pode interrompê-lo no laço e imprimir sum a cada iteração.
#include <iostream>
int main() {
int sum = 0;
for (int i = 1; i <= 3; ++i) {
sum += i;
}
std::cout << sum << "\n";
return 0;
}A pilha de chamadas
Quando o programa estiver parado, backtrace (gdb) ou bt (lldb) mostrará a cadeia de chamadas de funções. Use frame N para mudar para uma função chamadora e inspecionar suas variáveis locais.
Pontos de observação
Um ponto de observação interrompe o programa quando uma variável muda, ajudando a descobrir onde ocorrem modificações inesperadas.
- gdb:
watch counter - lldb:
watchpoint set variable counter
Pontos de interrupção condicionais
Interrompa a execução apenas quando uma condição for satisfeita, evitando percorrer o código manualmente.
- gdb:
break loop.cpp:5 if i == 99 - lldb:
breakpoint set --line 5 --condition "i == 99"
Depurando falhas
Execute o programa que falha sob o depurador; em uma falha de segmentação, ele para na linha que causou o erro. Em seguida, use bt para ver como você chegou até lá. Você também pode analisar um despejo de memória posteriormente.
Verificação rápida
Relembre os comandos para percorrer o código.
Recapitulação
Você aprendeu sobre depuração interativa.
- Compile com
-g -O0 - Defina pontos de interrupção, use
rune depoisnext/step/finish - Inspecione com
print/frame variableebacktrace - Pontos de observação e pontos de interrupção condicionais ajudam a localizar erros difíceis
Perguntas Frequentes
A aula “Uso de gdb e lldb” é grátis?
Sim — o texto completo de “Uso de gdb e lldb” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.
O que vou aprender em “Uso de gdb e lldb”?
Percorra os programas passo a passo Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C++ Academy?
Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Uso de gdb e lldb”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C++ Academy?
Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Uso de gdb e lldb
- AddressSanitizer
- UBSan e TSan
- Noções básicas de Valgrind