Хочу попробовать сделать реализацию sentry на pawn, есть ли вообще возможности реализовать хотя бы 50% функционала?
Реализация Stacktrace под большим вопросом.
Вид для печати
Хочу попробовать сделать реализацию sentry на pawn, есть ли вообще возможности реализовать хотя бы 50% функционала?
Реализация Stacktrace под большим вопросом.
Зачем вообще пытаться прикрутить к серверу Sentry, если можно банально обойтись Crashdetect'ом? Вызов пользовательского обработчика ошибок? Есть. Трассировка стека? Тоже есть. Остаётся только организовать саму обработку ошибок.
#include <crashdetect> public OnRuntimeError() { new backtrace[1024]; GetBacktrace(backtrace); // Код отправки на E-Mail, сохранения в лог ошибок и т.д. }
Удобно в реал тайме получать сообщения об ошибках, просмотр статистики через дашборд и т.д.
Больше всего интересует как можно сделать захват куска исходного кода, т.е. Stacktrace.
PHP код:
{
"pre_context": [
"line1",
"line2"
],
"context_line": "line3",
"post_context": [
"line4",
"line5"
]
}
Как вариант - получить в текстовом виде трассировку с помощью того же CrashDetect и распарсить её.
Если же речь о содержимом строк с исходным кодом, то для этого можно скомпилировать скрипт с полной отладочной информацией (ключ "-d2"), а затем из этой информации вытаскивать строки кода с помощью функций из amxdbg.h. Но я бы не советовал так делать: если *.amx попадёт в чужие руки, по полной отладочной инфе можно будет восстановить весь исходный код, вплоть до названий переменных, потеряются только комментарии.