У меня есть ещё вопрос. Куда компилируется новый файл dll. Я его так и не нашёл, после того, как скомпилировал.
У меня есть ещё вопрос. Куда компилируется новый файл dll. Я его так и не нашёл, после того, как скомпилировал.
Внутри папки CvGameCoreDLL есть папка Release, именно там он и лежит.
Так с обещанием пересказа статьи о дебаггинга я немного погорячился, там моего уровня маловато будет, поэтому перескажу что сам понял и чем уже пользовался. Вчера например несколько багов исправил с функцией, что модифицировал перед этим. Оригинал можно найти в моем пересказе выше, о компиляции. Там следующее сообщение дебаггингу посвящено.
Во первых в VS2008, в свойствах проекта выбираем не Release, а Debug. Ну как на картинке, что я сейчас добавлю.
Вот добавил пример.
И начинаем компилировать. Полученный dll будет больше и медленнее, у меня он занял 16 МБ и лежать в подпапке Debug. Его я поместил в папку Assets моего мода, с заменой, как и обычный dll. Заодно включил в настройках самой цивы одну штуку, это в её файле CivilizationIV.ini что лежит в Документах - My Games\Beyond The Sword.
Это чтобы дампы делались в случае вылета.
Что с ними делать, есть в этой теме.Код:; Create a dump file if the application crashes GenerateCrashDumps = 1
Ещё рекомендуется запускать игру в окне, чтобы проще переключаться было.
Далее запускаем свой мод. В VS2008 в меню Debug находим Attach to Process, и в списке запущенных процессов находим Civ4BeyondSword.exe или как уж он там будет. Выбираем его, жмем Attach и переключаемся обратно на игру. Играем до бага, а лучше включаем автоплей ходов этак на 150, сворачиваем циву и занимаемся своими делами. Когда игра вылетит VS2008 сама остановится на функции что привела к вылету и можно будет просмотреть что за переменные виноваты.Код:; Specify whether to play in fullscreen mode 0/1/ask FullScreen = 0
После правим свой код, что вызывает ошибки и перекомпилируем. Если вылеты продолжаются, думаем и повторяем.
Ещё в Debug-режиме игра может выдавать всякие FAssertMsg, это специальные проверки в коде, на случай если какие переменные принимают недопустимые значения. Это полезно, но зачастую то, что он выдает можно не трогать, если и так работает, вроде RevDCM и лезть смотреть только если мешает игре.
Вообще вообще этот самый Debug позволяет кучу возможностей, вроде запуска игры прямо в VS2008 для её отладки, или установки в коде специальных breakpoint, которые точки остановки. На которых игра будет сама останавливаться и можно будет просмотреть значение переменных. Но это я опишу после, когда я свой уровень подниму до правильного их использования.
Всё понятно. Хорошо, что кто-то занялся изучением SDK. Спасибо за помощь.