devterview_$ iniciar simulação

Cenário: o bug some quando você adiciona um log

DifícilSêniorMétodo

Pergunta

Um bug intermitente desaparece assim que você adiciona um `console.log` ou roda no debugger. O que isso costuma indicar e como investigar?

Resposta esperada

É quase sempre um problema de timing/concorrência: o log ou o breakpoint muda o escalonamento e mascara a corrida. Suspeitos: uma race condition entre operações assíncronas que dependem de ordem não garantida; acesso a estado compartilhado sem sincronização; uma promessa não aguardada cujo resultado às vezes chega antes, às vezes depois; dependência de ordem de resolução de callbacks. Como investigar: não confie no log que 'conserta' — use logging que não altera timing (buffer em memória, despejar no fim), adicione delays artificiais dos dois lados pra forçar a corrida a acontecer sempre, revise o código em volta procurando dois caminhos que tocam o mesmo dado, e escreva um teste que estressa a concorrência. A correção real é remover a dependência de ordem, não colocar um sleep.

Por que perguntam isso

Cenário sênior ('heisenbug'). Bom candidato reconhece na hora que é concorrência e não tenta 'estabilizar' com sleep. Conecta com o cenário de teste flaky.

#heisenbug#race-condition#concorrencia
publicidade

Relacionadas