Voltar ao blog

Como debugar um app que a IA escreveu e você não entende

Um método para achar o erro em código gerado por IA sem saber programar: onde olhar, como ler o console, como isolar o problema e como escrever o prompt de correção que funciona.

C
Caio Braga
23 de agosto de 2026 · 6 min de leitura
Sumário do artigo
Como debugar um app que a IA escreveu e você não entende

O app funcionava. Você pediu mais um ajuste, a IA respondeu que estava tudo certo, e agora a tela está branca. Você pede para corrigir, ela conserta uma coisa e quebra outra. Na quarta tentativa o app está pior do que estava e você já gastou vinte créditos.

O problema quase nunca é o modelo. É que o pedido de correção não tem informação suficiente para ninguém consertar nada, humano ou máquina. Debugar código gerado por IA é menos sobre entender o código e mais sobre coletar evidência antes de pedir socorro.

Regra zero: reproduzir antes de pedir correção

Antes de escrever qualquer prompt, responda três coisas:

O que você fez, na ordem exata dos cliques. Qual era o resultado esperado. O que apareceu no lugar.

Se o erro só acontece às vezes, anote o que era diferente nas vezes em que aconteceu: outro usuário logado, campo vazio, primeiro acesso do dia, aba aberta há horas. Erro intermitente quase sempre é sessão expirada, dado nulo ou corrida entre duas requisições.

Onde olhar, por sintoma

Sintoma Primeiro lugar
Tela branca Console do navegador
Botão não faz nada Console, depois aba Network
Dado não salva Aba Network, resposta da requisição
Some ao recarregar Estado que nunca foi para o banco
Funciona local, quebra publicado Variáveis de ambiente e build
Funciona na sua conta, falha na outra Policy de RLS

Console e Network abrem com F12 no navegador, ou botão direito e Inspecionar. São as duas telas que resolvem oitenta por cento dos casos.

Lendo o console sem saber programar

O console mostra o erro e o caminho até ele. Você não precisa entender o código, precisa entender três padrões.

Cannot read properties of undefined (reading 'map') significa que o código esperava uma lista e recebeu nada. Costuma ser resposta do banco que voltou vazia ou com erro, e o código não tratou esse caso.

X is not a function significa que o código chamou algo que não existe com esse nome. Geralmente é importação errada ou nome trocado numa edição recente.

Failed to fetch ou NetworkError significa que a requisição nem chegou ao destino. Olhe URL, chave e CORS.

A primeira linha vermelha importa. As seguintes costumam ser consequência. Copie a primeira inteira, com o nome do arquivo e o número da linha que aparece à direita.

Lendo a aba Network

Clique na aba Network, refaça a ação e olhe a linha que aparece. O que interessa é a coluna de status e a aba Response.

Status Significado prático
200 Deu certo. Se o dado não apareceu, o problema é na tela
400 Requisição malformada. Campo faltando ou tipo errado
401 Sem token válido. Sessão expirada ou chave errada
403 Autenticado, mas sem permissão. Quase sempre RLS
404 Endpoint ou tabela não existe com esse nome
429 Muitas requisições em pouco tempo
500 Erro do servidor. Veja o log da função

Clique na requisição e abra Response. O Supabase devolve o motivo por escrito. Uma resposta como new row violates row-level security policy for table "projetos" diz exatamente o que corrigir, e nenhuma quantidade de tentativa e erro no prompt chega lá mais rápido.

Erros do Supabase que aparecem sempre

Mensagem Causa
new row violates row-level security policy Falta policy de insert ou update para esse usuário
JWT expired Sessão venceu e o cliente não renovou
relation "x" does not exist Nome de tabela errado ou schema diferente
column "x" of relation "y" does not exist A IA gerou código para uma coluna que não existe no banco
duplicate key value violates unique constraint Índice único bloqueou o registro repetido

O quarto caso é o mais comum em app gerado por IA: o código e o banco desalinham depois de algumas iterações. Vale abrir o painel de tabelas e conferir o nome exato da coluna antes de qualquer coisa.

Isolar antes de corrigir

Quando o erro não é óbvio, reduza o espaço de busca em vez de pedir uma correção geral.

Volte para o último ponto que funcionava. No Lovable isso é o histórico de versões; em projeto com Git, um commit anterior. Confirme que naquele ponto está tudo certo. Agora você sabe que o problema está entre os dois pontos, e isso é metade do trabalho.

Refaça um passo de cada vez. Se foram três pedidos desde então, aplique um, teste, aplique o próximo. O pedido que quebra aparece sozinho.

Peça um log em vez de uma correção. Um console.log antes da linha suspeita mostrando o valor da variável responde mais que três rodadas de adivinhação.

O prompt de correção que funciona

Prompt ruim: "não está funcionando, arruma".

Prompt que resolve:

A tela de projetos está em branco depois que salvo um projeto novo.

Passos: faço login, clico em Novo Projeto, preencho o nome, clico em Salvar.
Esperado: voltar para a lista com o projeto novo.
Acontece: tela branca.

Console: Cannot read properties of undefined (reading 'map')
em ListaProjetos.tsx, linha 42.

Network: POST para /rest/v1/projetos retorna 201.
GET para /rest/v1/projetos retorna 200 com array vazio.

Já tentei: recarregar a página. Depois de recarregar, o projeto aparece.

Não mexa em outros arquivos. Explique a causa antes de alterar o código.

Quatro coisas fazem esse prompt funcionar: o erro literal copiado, o comportamento observado na rede, o que você já testou e o limite de escopo. As duas últimas frases evitam que a correção espalhe mudança por arquivos que estavam bons.

Peça a causa antes da correção. Se a explicação não faz sentido nem para você, provavelmente a correção também não faz.

Quando parar de pedir e olhar o código

Depois de duas tentativas sem progresso, abra o arquivo citado no erro e leia as linhas em volta da linha indicada. Você não precisa entender tudo, só precisa achar o nome da variável ou da coluna e conferir se bate com o banco.

Boa parte dos erros de app gerado por IA é desalinhamento de nome: a tela busca criado_em, a tabela tem created_at. Isso é achável sem saber programar.

Prevenção que economiza crédito

Hábito Por que ajuda
Um pedido por vez Quando quebra, você sabe qual foi
Testar depois de cada mudança O intervalo de busca fica pequeno
Salvar versão antes de mudança grande Rollback em um clique
Pedir explicação junto da correção Você aprende o padrão e repete menos o erro
Manter aberto o painel de tabelas Confere nome de coluna na hora

Debugar é um ciclo curto: reproduzir, observar, isolar, corrigir, confirmar. A IA é ótima na etapa de corrigir e péssima nas outras três, porque ela não vê a sua tela nem o seu console. Quem faz esse trabalho é você, e é por isso que a evidência coletada antes do prompt vale mais que o modelo escolhido.

Tags
#vibe coding#debug#lovable#supabase#erros
● Não perca essa chance

Não perca a próxima edição.

Toda quinta, 9h. Direto na sua caixa.

  • Ferramentas que economizam horas do seu trabalho
  • Agentes e automações que funcionam
  • Bastidores do que estamos construindo

100% gratuito. Cancele quando quiser.

Compartilhar