PDA

Просмотр полной версии : [Plugin] CrashDetect



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

Пример:
Допустим, у нас есть такой код:


#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), на которой произошла ошибка.


Скачать:
Самую новую версию плагина всегда можно найти здесь:

https://github.com/Zeex/samp-plugin-crashdetect/releases
Исходный код:

https://github.com/Zeex/samp-plugin-crashdetect

Источник: http://forum.sa-mp.com/showthread.php?t=262796
Автор плагина: Zeex
Перевод и дополнение: Daniel_Cortez


Специально для Pro-Pawn.ru (http://www.pro-pawn.ru)

Daniel_Cortez
06.12.2015, 11:50
Пожалуй, самыми распространёнными причинами срабатывания CrashDetect являются выходы за пределы массива, поэтому я расписал решение таких проблем в отдельной теме:

http://pro-pawn.ru/showthread.php?12957

Вот ещё пара примечаний по поводу работы плагина:
CrashDetect не работает совместно с плагинами Profiler и JIT, можно использовать только один из них.
Перед использованием плагина желательно откомпилировать скрипт в режиме отладки (-d3). Как именно - см. в посте выше.
Плагин "crashdetect" должен быть прописан самым первым в строке "plugins" в server.cfg.

Blood
07.01.2016, 16:11
из-за чего может не подключатся этот плагин ?

[16:02:49] Server Plugins
[16:02:49] --------------
[16:02:49] Loading plugin: crashdetect
[16:02:49] Failed.

L0ndl3m
07.01.2016, 16:12
Одна из причин: плагин отсутствует в папке plugins.

Blood
07.01.2016, 16:24
Одна из причин: плагин отсутствует в папке plugins.

Плагин и инклуд есть .

VVWVV
07.01.2016, 16:38
Плагин и инклуд есть .

Также, возможно, вы скачали плагин для GNU\linux (Архив: crashdetect-4.15.1-linux.tar.gz).

Blood
07.01.2016, 16:50
Также, возможно, вы скачали плагин для GNU\linux (Архив: crashdetect-4.15.1-linux.tar.gz).

Нет все для виндовса .
Исправил не работал из-за msvcp100.dll , msvcr100.dll , удалил их все работает .
Спасибо всем за помощь .

DoN_SancheS
30.11.2016, 23:09
А почему в последней версии нет CrashDetect.so ?

и как вообще нужно правильно установить этот плагин,
например куда нужно кинуть CrashDetect.pdb

vovandolg
01.12.2016, 01:50
А почему в последней версии нет CrashDetect.so ?


github (https://github.com/Zeex/samp-plugin-crashdetect/releases)
есть тут всё...



и как вообще нужно правильно установить этот плагин


Просто закинуть в папку с плагинами и подключить в server.cfg его на первом месте среди других плагинов



например куда нужно кинуть CrashDetect.pdb

microsoft (https://msdn.microsoft.com/ru-ru/library/yd4f8bd1(v=vs.90).aspx)
На сколько я понял этот файл не нужен для сервера sa:mp

DoN_SancheS
01.12.2016, 17:17
вы ответили на 2 вопросы (спасибо)
но один вопрос всё же остался, либо я слепой либо у вас галлюцинации, в архиве win32.zip нет crashdetect.so он есть в архиве linux.tar.gz но разве можно взять от туда для виндовс?

DeimoS
01.12.2016, 19:29
вы ответили на 2 вопросы (спасибо)
но один вопрос всё же остался, либо я слепой либо у вас галлюцинации, в архиве win32.zip нет crashdetect.so он есть в архиве linux.tar.gz но разве можно взять от туда для виндовс?

Эмм, crashdetect.so нужна исключительно для Linux.

DoN_SancheS
01.12.2016, 20:08
так значит если я хочу поставить на хостинг то я должен скачать все архивы из linux???
или только crashdetect.so а остальные из винодвс? (просто я совсем новичок в этом деле)

HarrWe
01.12.2016, 21:28
вы ответили на 2 вопросы (спасибо)
но один вопрос всё же остался, либо я слепой либо у вас галлюцинации, в архиве win32.zip нет crashdetect.so он есть в архиве linux.tar.gz но разве можно взять от туда для виндовс?

Для Win скачиваешь win32.zip, а для Linux (Это нужный тебе формат SO) linux.tar.gz.

DoN_SancheS
01.12.2016, 22:08
Всем огромное спасибо, проблема кажется решена)