Exemplo de falha
Suponha que executemos o seguinte modo de jogo:
Código do peão:Suponha que executemos o seguinte modo de jogo:
- Código:
#include <a_samp>
main ( ) {
function1 ( ) ;
}
função1 ( ) {
função2 ( ) ;
}
function2 ( ) {
new buf [ 10 ] ;
fread ( Arquivo : 123 , buf ) ;
}
Por padrão, quando se trata de function2, seu servidor será encerrado imediatamente e, se você estiver executando o Windows, ele despejará algumas coisas ilegíveis em crashinfo.txt.
Mas com o crashdetect, você vê o seguinte no log do servidor:
Código:Mas com o crashdetect, você vê o seguinte no log do servidor:
- Código:
[05:26:38] [debug] O servidor travou ao executar crash.amx
[05:26:38] [depurar] Backtrace (chamada mais recente primeiro):
[05:26:38] [depurar] #0 nativo fread () de samp-server.exe
[05:26:38] [depurar] #1 00000090 em ?? () de crash.amx
[05:26:38] [depurar] #2 00000038 em ?? () de crash.amx
[05:26:38] [depurar] #3 0000001c em main () de crash.amx
que é mais informativo. Você também pode obter mais informações, como números de linha, nomes de função, valores de parâmetro, etc, se compilar esse script no modo de depuração para fazer o compilador colocar informações extras sobre todas essas coisas no .amx de saída (veja aqui como ) :
Código:- Código:
[05:27:11] [debug] O servidor travou ao executar crash.amx
[05:27:11] [depurar] Backtrace (chamada mais recente primeiro):
[05:27:11] [depurar] #0 nativo fread () de samp-server.exe
[05:27:11] [debug] #1 000000b8 em function2 () em crash.pwn:13
[05:27:11] [debug] #2 00000048 em function1 () em crash.pwn:8
[05:27:11] [debug] #3 00000024 em main () em crash.pwn:4
Erro de tempo de execução
Os erros de tempo de execução geralmente são relatados por meio da mensagem "Erro de tempo de execução: "Detalhes do erro aqui"". Infelizmente, esta mensagem raramente é exibida porque o servidor nem sempre as verifica.
Algum código de exemplo por JernejL:
Código do peão:Os erros de tempo de execução geralmente são relatados por meio da mensagem "Erro de tempo de execução
Algum código de exemplo por JernejL:
- Código:
public OnGameModeInit ( ) {
new bla [ 5 ] ;
novo fffuuuu = 0 ;
fffuuuu = 100 ;
bla [ fffuuuu ] = 100 ;
return bla [ fffuuuu ] ;
}
Se você compilar este código no modo de depuração e executá-lo:
Código:- Código:
[05:32:16] [depurar] Erro de tempo de execução 4: "Índice de matriz fora dos limites"
[05:32:16] [depurar] Acessando elemento no índice 100 além do limite superior 4 do array
[05:32:16] [depurar] Backtrace (chamada mais recente primeiro):
[05:32:16] [debug] #0 00000084 em público OnGameModeInit () em bounds.pwn:11
Nova opção server.cfg
Se você quiser fazer seu servidor fechar no primeiro erro de tempo de execução, defina a variável "die_on_error" em server.cfg como 1. Faça o
download
Se você quiser fazer seu servidor fechar no primeiro erro de tempo de execução, defina a variável "die_on_error" em server.cfg como 1. Faça o
download
Links fixos - Y_Less.