Дата публикации: 22.12.2017 Добавил: New_King Категория: Плагины
8
0

Данный плагин выводит в консоль сервера сообщения об ошибках. С его помощью можно найти нужный отрывок кода, из-за которого происходит ошибка или краш сервера.

Пример:
Допустим, у нас есть такой код:
#include <a_samp>
 
main() {
    function1();
}
 
function1() {
    function2();
}
 
function2() {
    new buf[10];
    fread(File:123, buf);
}  


Когда выполнение дойдёт до функции function2, сервер упадёт и, если он запущен под Шindoшs, в crashinfo.txt будет записана непонятная информация о краше.

Однако с CrashDetect вы можете увидеть более понятное сообщение в server_log.txt
[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


Также можно получить более подробную информацию (например строки кода, на которых происходит ошибка, имена функций, параметры и т.д.), скомпилировав скрипт в режиме отладки следующим образом:
Открыть блокнот и ввести "-d3" (без кавычек).
Сохранить файл как "pawn.cfg" (под именем указать параметр "Все файлы") в папку с Pawno.
Заново скомпилировать мод.

После этого во время ошибки будет выведено следующее:
[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


Теперь можно увидеть имя исходного файла (crash.pwn), название функции (function2) и даже номер строки (crash.pwn:13), на которой произошла ошибка.