Crashdetect v4.6
Данный плагин - вывод в лог сервера ошибки во время работы сервера. Это помогает найти в какой конкретно функции баг, вызывающий краш сервера или переполнение памяти.
Пример вылета сервера
Предположим, что мы запускаем такой Gamemode:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <a_samp>
main() {
function1();
}
function1() {
function2();
}
function2() {
new buf[10];
fread(File:123, buf);
}
|
Когда дело дойдёт до
function2(), сервер крашнет. Если сервер запущен под Os Windows, то в
crashinfo.txt будет выведена нечитабельная запись
Но с CrashDetect вы увидите следующее в логах сервера:
Quote
[05:26:38] [debug] Server crashed while executing crash.amx
[05:26:38] [debug] Backtrace (most recent call first):
[05:26:38] [debug] #0 native fread () from samp-server.exe
[05:26:38] [debug] #1 00000090 in ?? () from crash.amx
[05:26:38] [debug] #2 00000038 in ?? () from crash.amx
[05:26:38] [debug] #3 0000001c in main () from crash.amx
Что является более информативным. Вы также можете получить дополнительную информацию, такую как номера строк, имена функций, параметров и т.д.
Quote
[05:27:11] [debug] Server crashed while executing crash.amx
[05:27:11] [debug] Backtrace (most recent call first):
[05:27:11] [debug] #0 native fread () from samp-server.exe
[05:27:11] [debug] #1 000000b8 in function2 () at crash.pwn:13
[05:27:11] [debug] #2 00000048 in function1 () at crash.pwn:8
[05:27:11] [debug] #3 00000024 in main () at crash.pwn:4
Runtime error
Run time errors как правило выводятся через сообщение "Run time error <error_code>: "Error details here"".
Образец, вызывающий Runtime Error:
1 2 3 4 5 6 7 8 9 10 11 | public OnGameModeInit() {
new bla[5];
new fffuuuu = 0;
fffuuuu = 100;
bla[fffuuuu] = 100;
return bla[fffuuuu];
}
|
Если вы планируете скомпилировать этот код в режиме отладки и запустить, выведет следующее:
Если вы хотите, что бы сервер выключался после первой Runtime Error, установите значение "die_on_error" в файле server.cfg в