171 lines
9.4 KiB
Plaintext
171 lines
9.4 KiB
Plaintext
╔══════════════════════════════════════════════════════════════════════════╗
|
||
║ 🐛 БЫСТРЫЙ СТАРТ - ОТЛАДКА МОДА ║
|
||
╚══════════════════════════════════════════════════════════════════════════╝
|
||
|
||
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
СПОСОБ 1: ATTACH TO PROCESS (С BREAKPOINTS) ⭐
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
|
||
✅ Проект уже настроен для отладки!
|
||
✅ .pdb файл создаётся автоматически при сборке
|
||
|
||
📋 ШАГИ:
|
||
|
||
1️⃣ Откройте проект в Visual Studio или Rider:
|
||
Source/AIImages/AIImages.csproj
|
||
|
||
2️⃣ Соберите в Debug режиме (уже собрано):
|
||
cd Source/AIImages
|
||
dotnet build -c Debug
|
||
|
||
3️⃣ Запустите RimWorld (через Steam или напрямую)
|
||
|
||
4️⃣ В Visual Studio:
|
||
• Debug → Attach to Process... (Ctrl+Alt+P)
|
||
• Найдите "RimWorldWin64.exe"
|
||
• Нажмите "Attach"
|
||
|
||
В Rider:
|
||
• Run → Attach to Process...
|
||
• Найдите "RimWorldWin64"
|
||
• Нажмите OK
|
||
|
||
5️⃣ Откройте файл с кодом (например PawnGizmoPatch.cs)
|
||
|
||
6️⃣ Поставьте breakpoint:
|
||
• Кликните слева от номера строки
|
||
• Появится красная точка 🔴
|
||
|
||
7️⃣ В игре выберите пешку
|
||
→ Код остановится на breakpoint!
|
||
→ Можно смотреть значения переменных
|
||
|
||
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
СПОСОБ 2: ЛОГИРОВАНИЕ (ПРОСТОЙ) 📝
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
|
||
1️⃣ Добавьте в код Log.Message():
|
||
|
||
Log.Message("[AI Images] Pawn selected: " + __instance.Name);
|
||
|
||
2️⃣ Соберите проект:
|
||
dotnet build
|
||
|
||
3️⃣ Запустите RimWorld
|
||
|
||
4️⃣ В игре нажмите Ctrl+F12 → окно логов
|
||
|
||
5️⃣ Выберите пешку → увидите сообщение в логе!
|
||
|
||
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
ГОТОВЫЕ ПРИМЕРЫ ДЛЯ ВСТАВКИ
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
|
||
📍 В PawnGizmoPatch.cs (строка 16):
|
||
|
||
Log.Message($"[AI Images] GetGizmos for: {__instance.Name}");
|
||
|
||
📍 В Window_AIImage.cs (в DoWindowContents, строка 25):
|
||
|
||
Log.Message($"[AI Images] Drawing window for: {pawn.Name}");
|
||
|
||
📍 При нажатии кнопки (PawnGizmoPatch.cs, строка 34):
|
||
|
||
Log.Message("[AI Images] Button clicked!");
|
||
|
||
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
ГДЕ НАХОДЯТСЯ ЛОГИ
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
|
||
В игре:
|
||
Ctrl+F12 → окно с логами в реальном времени
|
||
|
||
Файл лога:
|
||
C:\Users\mrleo1nid\AppData\LocalLow\Ludeon Studios\
|
||
RimWorld by Ludeon Studios\Player.log
|
||
|
||
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
ПОЛЕЗНЫЕ КОМАНДЫ
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
|
||
Сборка в Debug (с .pdb):
|
||
cd Source/AIImages
|
||
dotnet build -c Debug
|
||
|
||
Сборка в Release (без .pdb, для публикации):
|
||
dotnet build -c Release
|
||
|
||
Очистка и пересборка:
|
||
dotnet clean
|
||
dotnet build -c Debug
|
||
|
||
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
СОВЕТЫ
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
|
||
✅ Используйте префикс [AI Images] в логах - легче искать
|
||
|
||
✅ Dev Mode в игре (Options → Settings → Development mode)
|
||
Даёт доступ к Debug Actions и Debug Inspector
|
||
|
||
✅ Логируйте важные моменты:
|
||
• Когда метод вызывается
|
||
• Значения переменных
|
||
• Успех/неудачу операций
|
||
|
||
✅ Try-Catch для отлова ошибок:
|
||
|
||
try {
|
||
// Ваш код
|
||
} catch (Exception ex) {
|
||
Log.Error($"[AI Images] Error: {ex}");
|
||
}
|
||
|
||
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
TROUBLESHOOTING
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
|
||
❓ Breakpoint не срабатывает?
|
||
→ Убедитесь, что собрано в Debug (не Release)
|
||
→ Проверьте, что .pdb файл есть в Assemblies/
|
||
→ Код действительно выполняется? (добавьте Log.Message)
|
||
|
||
❓ Не видите свой мод в Process List?
|
||
→ Убедитесь, что мод загружен в игре
|
||
→ Попробуйте перезапустить игру
|
||
|
||
❓ "Symbols not loaded"?
|
||
→ Удалите все из Assemblies/
|
||
→ Пересоберите: dotnet clean && dotnet build -c Debug
|
||
|
||
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
ДОПОЛНИТЕЛЬНАЯ ДОКУМЕНТАЦИЯ
|
||
═══════════════════════════════════════════════════════════════════════════
|
||
|
||
📖 Полная инструкция: DEBUGGING_RU.md
|
||
📖 Примеры кода: DEV_CHEATSHEET.txt
|
||
|
||
|
||
╔══════════════════════════════════════════════════════════════════════════╗
|
||
║ ✅ ВСЁ ГОТОВО ДЛЯ ОТЛАДКИ! ║
|
||
║ ║
|
||
║ Файлы в Assemblies/: ║
|
||
║ • AIImages.dll ✅ ║
|
||
║ • AIImages.pdb ✅ (отладочные символы) ║
|
||
║ • 0Harmony.dll ✅ ║
|
||
║ ║
|
||
║ Запустите RimWorld и подключите отладчик! ║
|
||
╚══════════════════════════════════════════════════════════════════════════╝
|
||
|
||
|
||
Удачной отладки! 🐛→✨
|
||
|