REL ASI SampCrashReporter - Расширенный лог самп-крашей

  • Привет! Если твой основной форумник заблокирован - ты можешь оставить заявку в этом разделе: Нажми на меня!, НЕ создавая новый форумный аккаунт.
  • Менеджмент проекта ждет ваши вопросы/предложения/критику работы проекта в специальном треде

Tellmeulife

Постоянный
Автор темы
Game Admin
164
2,887


SA-MP Crash Reporter
Информативный отчёт о крашах GTA San Andreas / SA-MP


Описание
SA-MP Crash Reporter перехватывает необработанные краши игры и создаёт подробный отчёт с информацией о модуле, типе ошибки, регистрах, стеке, загруженных DLL/ASI и состоянии Lua/CLEO-скриптов.

Основные возможности
  • Определение типа исключения Windows.
  • Определение DLL-модуля и смещения ошибки.
  • Определение типа обращения к памяти: чтение, запись или выполнение.
  • Вывод регистров процессора и проверенного стека.
  • Список загруженных DLL и ASI.
  • Аудит файлов сборки: Lua, CLEO, ASI, DLL, DFF, TXD, COL и IMG.
  • Проверка базовых заголовков файлов.
  • SHA-256 для сравнения изменённых файлов.
  • Чтение последних строк cleo.log и MoonLoader/moonloader.log.
  • Runtime-состояние последнего активного Lua/CLEO-скрипта.



Содержимое архива
  • SampCrashReporter.asi — вариант для ASI Loader.
  • SampCrashReporter.dll — вариант для DLL-загрузчика.
  • MoonLoader/CrashReporterBridge.lua — мост для MoonLoader.
  • CLEO/CrashReporterBridge.txt — протокол маркеров для CLEO.
  • README.md — подробная документация.



Установка
  1. Скопируйте SampCrashReporter.asi и SampCrashReporter.dll в папку с gta_sa.exe.
  2. Запустите игру и дождитесь краша или обычной работы сборки.
  3. После краша найдите отчёты в корне игровой папки.

Для MoonLoader
Скопируйте файл:

Код:
MoonLoader/CrashReporterBridge.lua

в:

Код:
MoonLoader/lib/CrashReporterBridge.lua

Для CLEO

Используйте протокол записи маркеров из файла:

Код:
CLEO/CrashReporterBridge.txt



Создаваемые отчёты

samp_crash_report.txt


Содержит:
  • Cause — код и тип исключения.
  • Assessment — эвристическая подсказка по проблемному модулю.
  • Fault address — адрес инструкции, на которой произошёл краш.
  • Module — DLL, содержащая адрес ошибки.
  • Offset — смещение ошибки относительно базы модуля.
  • Access type — чтение, запись или выполнение.
  • Target — адрес памяти, к которому обращалась программа.
  • Registers — значения регистров процессора.
  • Stack — содержимое проверенного стека.
  • Loaded modules — список загруженных DLL/ASI.
  • Runtime bridge state — последний известный Lua/CLEO-маркер.

samp_build_audit.txt

Таблица аудита файлов:

Код:
Kind    Path    SizeBytes    Status    Header    SHA256

Статусы:
  • PRESENT — файл найден.
  • EMPTY — файл пустой.
  • TOO_SMALL — файл слишком маленького размера.
  • BAD_PE — повреждённый PE-заголовок DLL/ASI.
  • BAD_RW — подозрительный заголовок DFF/TXD.
  • BAD_COL — подозрительный заголовок COL.
  • BAD_IMG — подозрительный заголовок IMG.
  • UNREADABLE — файл невозможно прочитать.
  • HASH_FAILED — не удалось вычислить SHA-256.

samp_runtime_state.txt

Содержит последнее состояние runtime-моста:

Код:
kind=event
script=my_script.lua
line=42
message=loading model 411
time=2026-08-19T00:00:00Z



Пример использования MoonLoader bridge

Код:
local bridge = require('CrashReporterBridge')

bridge.mark('my_script.lua', 42, 'loading model 411')

local safe_call = bridge.wrap(function()
    -- код, который требуется отслеживать
end, 'my_script.lua')

safe_call()

Функции
  • bridge.mark(script, line, message) — записывает активный скрипт, строку и описание операции.
  • bridge.wrap(function, script) — выполняет функцию через xpcall и записывает traceback при Lua-ошибке.



Ограничения
  • Отчёт не может гарантированно назвать виновный файл только по адресу краша.
  • Для точного определения активного CLEO-скрипта нужен маркер перед подозрительной операцией.
  • IMG-файлы проверяются как контейнеры и не распаковываются.
  • Наличие повреждённого файла не доказывает, что именно он вызвал краш.
  • SHA-256 используется для сравнения файлов между сборками.
  • Для глубокого анализа редких крашей рекомендуется использовать минидамп и WinDbg или Visual Studio.

Совместимость
  • GTA San Andreas 1.0 US.
  • SA-MP 0.3.7.
  • 32-битные ASI/DLL-загрузчики.
  • MoonLoader и CLEO — через runtime-мост.
 

Вложения

  • SampCrashReporter.zip
    22.4 KB · Просмотры: 0

sixtocto

Легенда
1,206
10,872
  • Нравится
Реакции: ррт

Tellmeulife

Постоянный
Автор темы
Game Admin
164
2,887
  • Задумчивый
Реакции: ррт