Servidores de Jogos

Debugando seu gamemode com crashdetect e logs

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

  1. Instale o plugin na pasta de plugins e adicione-o à configuração do servidor;
  2. 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 playerid invá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 printf para 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

  1. Veja as últimas linhas do log antes da queda;
  2. Verifique se algum plugin foi atualizado recentemente;
  3. Reproduza num servidor de testes;
  4. 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.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS