Crashdetect v4.6
Никто еще не выложил этот плагин, но многие знают о нём. Всё таки решил создать эту тему.
Данный плагин вывод в лог сервера ошибки во время работы сервера. Это помогает найти в какой конкретно функции баг, вызывающий краш сервера или переполнение памяти.
Пример вылета сервера
Предположим, что мы запускает такой Gamemode:
#include <a_samp>
main() {
function1();
}
function1() {
function2();
}
function2() {
new buf[10];
fread(File:123, buf);
}
Когда дело дойдёт до function2(), сервер крашнет. Если сервер запущен под Os Windows, то в crashinfo.txt будет выведена нечитабельная запись
Но с CrashDetect вы увидите следующее в логах сервера:
Что является более информативным. Вы также можете получить дополнительную информацию, такую как номера строк, имена функций, параметров и т.д.Код:[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
Runtime errorКод:[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
Run time errors как правило выводятся через сообщение "Run time error <error_code>: "Error details here"".
Образец, вызывающий Runtime Error:
public OnGameModeInit() {
new bla[5];
new fffuuuu = 0;
fffuuuu = 100;
bla[fffuuuu] = 100;
return bla[fffuuuu];
}
Если вы планируете скомпилировать этот код в режиме отладки и запустить, выведет следующее:
Если вы хотите, что бы сервер выключался после первой Runtime Error, установите значение "die_on_error" в файле server.cfg в 1Код:[05:32:16] [debug] Run time error 4: "Array index out of bounds" [05:32:16] [debug] Accessing element at index 100 past array upper bound 4 [05:32:16] [debug] Backtrace (most recent call first): [05:32:16] [debug] #0 00000084 in public OnGameModeInit () at bounds.pwn:11
Загрузить
- Автор перевода: я (=KempeR=)
- Автор плагина: Zeex