Debugando seu gamemode com crashdetect e logs
O gamemode compila sem erros, mas em jogo algo quebra: um comando não responde, o servidor trava ou cai. Para descobrir o motivo, use o crashdetect e leia os logs.
O que é o crashdetect
É um plugin (há versões compatíveis com o open.mp) que intercepta erros de runtime do Pawn e mostra no log:
- O tipo do erro (por exemplo, array index out of bounds);
- A função e a linha onde aconteceu;
- A pilha de chamadas (backtrace).
Configurando
- Instale o plugin na pasta de plugins e adicione-o à configuração do servidor;
- Compile o gamemode com informações de depuração:
pawncc main.pwn -d3
Sem -d3, o crashdetect ainda avisa sobre o erro, mas sem os nomes das funções e as linhas.
Lendo um erro típico
[debug] Run time error 4: "Array index out of bounds"
[debug] Attempted to read/write array element at index 500 in array of size 500
[debug] AMX backtrace:
[debug] #0 00012abc in Casa_Carregar (casaid=500) at modulos/sistemas/casas.inc:87
Isso diz exatamente onde está o problema: casas.inc, linha 87, com um índice que passou do limite.
Erros de runtime mais comuns
- Array index out of bounds: índice fora do tamanho, como
playeridinválido (INVALID_PLAYER_ID) usado como índice; - Stack/heap collision: strings ou arrays locais grandes demais;
- Divisão por zero.
Um erro de runtime interrompe a função no meio. O resto do código dela não roda, o que explica sistemas que "às vezes não funcionam".
Logs do servidor
- Leia o log do servidor sempre que algo estranho acontecer;
- Use
printfpara rastrear o fluxo em pontos críticos:
printf("[CASAS] Carregadas %d casas", total);
- Tenha uma flag de debug para ativar mensagens detalhadas só quando precisar.
Quando o servidor cai
- Veja as últimas linhas do log antes da queda;
- Verifique se algum plugin foi atualizado recentemente;
- Reproduza num servidor de testes;
- Desative filterscripts e plugins um a um para isolar o culpado.
Não debugue em produção
Mantenha um servidor de testes para experimentar mudanças. Um erro testado com 5 jogadores é muito menos doloroso que um com 200.
Hospede seu servidor com a VittHost
Nos planos OPENMP-BR da VittHost, você vê o console e os logs em tempo real no painel Pterodactyl, o que acelera a depuração. Servidores no Brasil, proteção DDoS, MySQL incluso, compatibilidade total com scripts SA-MP e teste grátis de 3 dias.