~/VibeHandbook
PDF grátis

Capítulo 12 · 03

Alimentando a IA com o contexto certo

É aqui que está a maior parte da sua alavancagem. Ao relatar um bug, inclua:

  • A mensagem de erro, literal. Copie exatamente — não parafraseie. Parafrasear um erro é como descrever uma foto por telefone: você vai deixar de fora justamente o detalhe que importava.
  • O stack trace, especialmente as primeiras linhas.
  • O código relevante — a função que lançou o erro, mais tudo que ela chama.
  • O que você esperava versus o que aconteceu.

Veja como é, na prática, um de depuração forte:

I'm getting an error when I submit the signup form. Here's the full output:

TypeError: Cannot read properties of undefined (reading 'email')
    at validateUser (src/auth/validate.js:14:23)
    at handleSignup (src/routes/signup.js:31:10)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Steps to reproduce: fill in the form, click "Sign up".
Expected: a "Welcome" message.
Actual: the page goes blank and the error above appears in the console.

Here is validate.js (lines around 14):
[paste the function]

And here is the handleSignup function that calls it:
[paste the function]

What could be causing this, and how do I confirm it before changing anything?

Perceba a última linha. Você está pedindo uma hipótese e um passo de confirmação, não uma edição imediata. Isso mantém a IA honesta.

Ajuda saber como ler o trace que você está colando. Um stack trace é um histórico de chamadas, do mais recente para o mais antigo: a linha do topo é onde o programa de fato explodiu, e cada linha abaixo é a função que chamou a de cima. Então, no exemplo, validateUser é onde email foi lido de algo indefinido, e handleSignup é quem chamou validateUser. Os quadros abaixo do seu próprio código — como processTicksAndRejections — pertencem ao runtime da linguagem; você geralmente pode ignorá-los. Leia de cima para baixo até encontrar a primeira linha que aponta para o seu arquivo, e é quase sempre ali que você deve começar a procurar.

O mesmo trace, lido como uma pilha de chamadas, torna a ordem óbvia. A falha está no topo; cada quadro abaixo é o chamador do quadro acima dele:

   READ THE TRACE         =        THE CALL STACK
   (top = newest)                  (who called whom)

 ▲ validateUser  :14  ◀── CRASH    ┌─────────────────┐ ▲ start
 │ handleSignup  :31               │ validateUser  14│ │ looking
 │ processTicks...     (runtime,   ├─────────────────┤ │ here
 │                      ignore)    │ handleSignup  31│ │
 │                                 ├─────────────────┤ │
 └─ your code first ──────────────▶│ processTicks... │─┘ (runtime)
                                   └─────────────────┘
   read DOWN until the first line that is YOUR file

Quer offline?

Baixe o livro inteiro em PDF ou EPUB — grátis.