A depuração (debugging) é uma habilidade essencial para todo programador. Significa encontrar e corrigir erros no código. Usando as ferramentas certas, esse processo se torna muito mais eficiente!
🔧 1. Configurando o Ambiente de Depuração
1.1 Instalação do VS Code e Extensões
# Extensões essenciais para C/C++:
- C/C++ (Microsoft)
- C/C++ Extension Pack
- Code Runner
- GitLens
- Bracket Pair Colorizer
1.2 Configuração Básica do VS Code
Crie uma pasta .vscode no seu projeto com dois arquivos:
settings.json
{
"C_Cpp.default.compilerPath": "gcc",
"code-runner.runInTerminal": true,
"files.associations": {
"*.c": "c"
}
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
🐛 2. Técnicas Básicas de Depuração
2.1 Debugging com printf()
#include <stdio.h>
int main() {
int x = 10, y = 5;
// Ponto de depuração 1
printf("DEBUG: x = %d, y = %d\\\\n", x, y);
int resultado = x * y;
// Ponto de depuração 2
printf("DEBUG: resultado = %d\\\\n", resultado);
if (resultado > 40) {
printf("Resultado é maior que 40\\\\n");
}
return 0;
}
2.2 Usando o Debugger do VS Code
launch.json (criar na pasta .vscode)
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug C Program",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}
🔍 3. Exemplo Prático: Depurando um Programa com Erros
3.1 Código com Problemas
#include <stdio.h>
int calcular_media(int notas[], int tamanho) {
int soma = 0;
for(int i = 0; i <= tamanho; i++) { // ERRO: i <= tamanho
soma += notas[i];
}
return soma / tamanho;
}
int main() {
int notas[] = {8, 7, 9, 6, 8};
int tamanho = 5;
int media = calcular_media(notas, tamanho);
printf("Média: %d\\\\n", media);
return 0;
}
3.2 Passo a Passo da Depuração
- Coloque breakpoints (clique na margem esquerda do editor)
- Pressione F5 para iniciar a depuração
- Use os controles:
- ▶️ Continue (F5)
- ⏸️ Pause
- 🔴 Stop
- ⏭️ Step Over (F10)
- ⬇️ Step Into (F11)
- ⬆️ Step Out (Shift+F11)
- Observe as variáveis na janela de debug
- Use o Watch para monitorar variáveis específicas
🛠️ 4. Ferramentas Avançadas de Depuração
4.1 Condicional Breakpoints
#include <stdio.h>
int main() {
for(int i = 0; i < 100; i++) {
if(i == 50) { // Breakpoint condicional: pare quando i == 50
printf("Chegou na metade!\\\\n");
}
printf("i = %d\\\\n", i);
}
return 0;
}
4.2 Logpoints (Sem Alterar o Código)
No VS Code, clique com botão direito no breakpoint → “Edit Breakpoint” → “Log Message”
Mensagem: "Iteração {i}, valor: {array[i]}"
📋 5. Checklist de Depuração
Erros Comuns e Como Encontrá-los:
| Erro | Sintoma | Solução |
|---|---|---|
| Segmentação | Programa crasha | Verifique ponteiros e arrays |
| Loop infinito | Programa não termina | Verifique condições de parada |
| Lógica errada | Resultado incorreto | Use breakpoints e watch |
| Memória | Vazamento ou corrupção | Use valgrind (Linux) |
🎯 6. Exercício Prático: Depure este Código
#include <stdio.h>
int encontrar_maior(int arr[], int n) {
int maior = arr[0];
for(int i = 1; i <= n; i++) { // ERRO
if(arr[i] > maior) {
maior = arr[i];
}
}
return maior;
}
int main() {
int numeros[] = {3, 7, 2, 9, 5};
int maior = encontrar_maior(numeros, 5);
printf("Maior número: %d\\\\n", maior);
return 0;
}
Tarefa:
- Identifique o erro usando o debugger
- Corrija o código
- Verifique o resultado
🚀 PRÓXIMA AULA: STRUCTS EM C + JOGO DA FORCA!
Agora que você sabe depurar código, vamos criar um projeto completo usando structs!

