
CME is Bad
Активный0.0
Установок
Последнее обновление
Версии
CME is Bad - Дебаггер конкурентных ошибок в Minecraft
CME is Bad — это специализированный мод для диагностики коварных сбоев в играх на базе Java, которые вызываются ошибками параллельного изменения (CME) и выходом за границы коллекций (IOOBE). В отличие от стандартных отчетов об ошибках, которые показывают только стек текущего потока, этот инструмент предоставляет полную историю изменений проблемной коллекции.
Как работает модификация
Когда возникает критическая ошибка, CME is Bad создает подробный журнал загрузки и модификации целевой коллекции, позволяя точно определить, какой именно поток и мод вызывает конфликт. Это особенно полезно в многопоточных сценариях, характерных для модифицированного Minecraft.
Начало работы
- Поместите файл JAR в папку модов
- Добавьте в аргументы виртуальной машины Java (JVM) следующую строку:
-javaagent:mods/CMESuckMyDuck-<версия>.jar=<полное_имя_класса>;<имя_поля>;<тип>;<фаза>
- Запустите игру — при следующем сбое будет создан подробный отчет
Параметры конфигурации
Основные аргументы агента
- Полное имя класса: Используйте слеши вместо точек (например,
net/minecraft/client/audio/SoundEngine
) - Имя поля: Название отслеживаемого поля в целевом классе (для Forge используйте SRG-имена)
- Тип контейнера: Поддерживаются
List
,Set
иMap
- Фаза:
static
для статических полей,nonstatic
для нестатических
Примеры использования
CME в SoundEngine для Forge 1.16.5:
-javaagent:mods/CMESuckMyDuck-1.0.0.jar=net/minecraft/client/audio/SoundEngine;field_217942_m;Map;nonstatic
CME в PotionBrewing для Forge 1.20.1:
-javaagent:mods/CMESuckMyDuck-1.0.0.jar=net/minecraft/world/item/alchemy/PotionBrewing;f43494;List;static
Расширенные настройки
Уровень логирования
Системное свойство -Dcme_suck_my_duck.log_level=<уровень>
управляет детализацией журнала:
- Уровень 1 (по умолчанию) — логирует только модификации
- Уровень 0 — включает отладочные сообщения (не рекомендуется, создает огромные файлы)
Совместимость с ASM API
Для старых версий Minecraft (например, 1.12.2) может потребоваться изменение версии ASM API:
-Dcme_suck_my_duck.asm_api_version=5
Ограничение размера файла
Настройка -Dcme_suck_my_duck.file_max_entries=<размер>
определяет максимальное количество записей в журнале (по умолчанию 500). Сохраняются только последние две страницы операций.
Белый список конструкторов
Позволяет фильтровать мониторинг для часто используемых контейнеров:
-Dcme_suck_my_duck.whitelist_constructor_stacktrace=<строка>
CME is Bad превращает сложную задачу отладки многопоточных ошибок в понятный и управляемый процесс, экономя время разработчиков модпаков и опытных игроков.