Попробую сам описать по порядку все свои действия
Мануал рассчитан на аудиторию ,которая уже умеет на минимальном уровне работать с конфигурацией ,также имеет уже установленную базу данных ,и весь необходимый софт используемый в данном мануале ,включая исходники самого сервера.
Итак, Открываем проект с помощью visual studio (разбор идет на примере Visual studio 2010)
1) Выставляем режим Debug
(кажется этого хватает? )
2) Для того что бы запускать сервер прямо из студии(при условии отладки именно mangosd.exe )
устанавливаем проект по умолчанию mangosd
Примечание:
Возможно можно еще и так -
3)Также по информации вроде как нужны sumbol библиотеки
DEBUG- Options and Sеttings
скачиваются прямо из этого же меню,устанавливаются сами
4)Устанавливаем рабочую папку (Working directory) [Для того что бы подхватывал *.conf файл ]
5)После Собираем Весь проект с помощью кнопки
F7
6)Не Забываем положить в папку
bin\Win32_Debug\
Примечание:
KiriX: Достаточно положить один конфиг, рилмд рапускать из рабочей папки сервера, а путь до ДБЦ и карт прописать в конфиге
a) файлы конфигурации
mangosd.conf realmd.conf и по надобности
scriptdev2.conf
(я думаю возможность отладки sd2 будет разобран чуть позже отдельно)
б)папки с dbc maps
в)Настроить конфигурационные файлы под себя (естественно тут уже как кому надо ,я допустим выставляю уровень вывода в консоль 3 и уровень записи в файл тоже 3
Код:
LogSQL = 3
PidFile = ""
LogLevel = 3
Остальные настройки тоже нужны выставлять для каждого определенного случая по разному ,что скрыть ,что то нет.
LogFile = "Server.log"
LogTimestamp = 0
LogFileLevel = 3
LogFilter_AchievementUpdates = 1
LogFilter_CreatureMoves = 1
LogFilter_TransportMoves = 1
LogFilter_VisibilityChanges = 1
LogFilter_Weather = 1
LogFilter_DbStrictedCheck = 1
LogFilter_PeriodicAffects = 0
LogFilter_PlayerMoves = 0
LogFilter_SQLText = 0
LogFilter_AIAndMovegens = 0
LogFilter_PlayerStats = 0
LogFilter_Damage = 0
LogFilter_Combat = 0
LogFilter_SpellCast = 0
WorldLogFile = ""
WorldLogTimestamp = 0
DBErrorLogFile = "DBErrors.log"
CharLogFile = "Char.log"
CharLogTimestamp = 0
CharLogDump = 0
GmLogFile = ""
GmLogTimestamp = 0
GmLogPerAccount = 0
RaLogFile = ""
LogColors = "2 7 11 9"
7)После проверяем запуская сервер из папки если прогрузка проходит удачно ,закрываем и запускаем из vs с помощью
F5
Итак Когда все запустилось переходим к самому процессу отладки
(всем огромное спасибо кто отписался в теме теперь вроде бы я понял как и что ,может быть не все ,но суть ясна)
Примечание: нас сейчас на данный момент интересует именно описанные в теме breakpointы, так вот их нужно расставлять в коде ,как будет разобрано чуть ниже.
Перекомпилировать не НУЖНО ,во время запущеного с vs сервера можно ставить и удалять брикпоинты .
РАБОТАТЬ БУДЕТ
Разбирать будем по нескольким примерам:
Пример №1 (самый простой )
Находим в окошке проекта (
Solution Explorer )
game - world/hadlers -battleground.cpp
открываем -
ищем функцию (CTRL +F)
Код:
void BattleGround::SetBgRaid( uint32 TeamID, Group *bg_raid )
чуть ниже
Справа ставим брикпоинт с помощью левой кнопки мышки (вы сразу поймете если поставите ,большая красная точка)
Если нажать правой кнопкой мыши ,то можно выставить необходимые нам параметры для данного брикпоинта
чуть ниже в теме есть описание каждого из этих меню.
В самом низу есть вкладка BreakPoints ,она вам тоже понадобиться
Примечание :так как при запуске главным проектом является mangosd ,то естественно realmd (логин сервер не запускается) ,поэтому запускаем его вручную из папки .
Возможно можно еще и так -
далее заходим в игру под записью гм ,администратора
пишем в чате
.debug bg
после нажимаем на клавишу H ,переходим на вкладку Поля боя -выбираем поле боя ,нажимаем вступить в бой -вступаем в бой
После всех этих действий должен сработать breakpoint ,вас или автоматически свернет на vs ,если этого не произошло свернитесь сами
Примечание:Как только срабатывает breakpoint весь мир замораживается ,и никакие действия происходить не будут!!! Для того что бы продолжить выполнение действий нужно в vs нажать F5 (Continue) (не спешите этого делать!)
После того как мы свернулись в vs -смотрим
Теперь при наведении на переменную видим значения этих переменных
Также обратите внимание как выглядит теперь красная точка.
Примечание:если вы обратили внимание то большинство значений 0 ,видимо по той простой причине что заход на бг,был произведен в дебаг режиме ,поэтому большинство значений просто не были нужны
После того как бы налюбовались и проверили значения ,убедились что в мире ничего не происходит .можно нажать кнопку
F5 -и выполнение процесса продолжиться .
Пример №2
Всем спасибо за ответы.