Тема: [dev] manual debug
Показать сообщение отдельно
Старый 07.09.2010, 00:17   #1
partizanes
Пользователь
 
Аватар для partizanes
 
Регистрация: 15.03.2010
Адрес: Беларусь,Витебск
Сообщений: 93
Сказал(а) спасибо: 97
Поблагодарили 36 раз(а) в 11 сообщениях
partizanes На верном пути
Отправить сообщение для partizanes с помощью ICQ Отправить сообщение для partizanes с помощью Skype™
Сообщение [dev] manual debug

Попробую сам описать по порядку все свои действия

Мануал рассчитан на аудиторию ,которая уже умеет на минимальном уровне работать с конфигурацией ,также имеет уже установленную базу данных ,и весь необходимый софт используемый в данном мануале ,включая исходники самого сервера.

Итак, Открываем проект с помощью 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
Остальные настройки тоже нужны выставлять для каждого определенного случая по разному ,что скрыть ,что то нет.


7)После проверяем запуская сервер из папки если прогрузка проходит удачно ,закрываем и запускаем из vs с помощью F5

Итак Когда все запустилось переходим к самому процессу отладки (всем огромное спасибо кто отписался в теме теперь вроде бы я понял как и что ,может быть не все ,но суть ясна)

Примечание: нас сейчас на данный момент интересует именно описанные в теме breakpointы, так вот их нужно расставлять в коде ,как будет разобрано чуть ниже.
Перекомпилировать не НУЖНО ,во время запущеного с vs сервера можно ставить и удалять брикпоинты . РАБОТАТЬ БУДЕТ

Разбирать будем по нескольким примерам:

Пример №1 (самый простой )

Находим в окошке проекта (Solution Explorer )

game - world/hadlers -battleground.cpp

открываем - ищем функцию (CTRL +F)
Код:
void BattleGround::SetBgRaid( uint32 TeamID, Group *bg_raid )
чуть ниже
Код:
old_raid = bg_raid;
Справа ставим брикпоинт с помощью левой кнопки мышки (вы сразу поймете если поставите ,большая красная точка)

Если нажать правой кнопкой мыши ,то можно выставить необходимые нам параметры для данного брикпоинта
чуть ниже в теме есть описание каждого из этих меню.

В самом низу есть вкладка BreakPoints ,она вам тоже понадобиться


Примечание :так как при запуске главным проектом является mangosd ,то естественно realmd (логин сервер не запускается) ,поэтому запускаем его вручную из папки .
Возможно можно еще и так -


далее заходим в игру под записью гм ,администратора
пишем в чате .debug bg
после нажимаем на клавишу H ,переходим на вкладку Поля боя -выбираем поле боя ,нажимаем вступить в бой -вступаем в бой

После всех этих действий должен сработать breakpoint ,вас или автоматически свернет на vs ,если этого не произошло свернитесь сами

Примечание:Как только срабатывает breakpoint весь мир замораживается ,и никакие действия происходить не будут!!! Для того что бы продолжить выполнение действий нужно в vs нажать F5 (Continue) (не спешите этого делать!)

После того как мы свернулись в vs -смотрим

Теперь при наведении на переменную видим значения этих переменных
Также обратите внимание как выглядит теперь красная точка.
Примечание:если вы обратили внимание то большинство значений 0 ,видимо по той простой причине что заход на бг,был произведен в дебаг режиме ,поэтому большинство значений просто не были нужны
После того как бы налюбовались и проверили значения ,убедились что в мире ничего не происходит .можно нажать кнопку F5 -и выполнение процесса продолжиться .

Пример №2






Всем спасибо за ответы.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 1783
Размер:	4.5 Кб
ID:	633   Нажмите на изображение для увеличения
Название: 2.JPG
Просмотров: 1765
Размер:	33.1 Кб
ID:	634   Нажмите на изображение для увеличения
Название: 3.JPG
Просмотров: 1749
Размер:	41.3 Кб
ID:	635   Нажмите на изображение для увеличения
Название: sumbols.JPG
Просмотров: 1771
Размер:	49.0 Кб
ID:	636   Нажмите на изображение для увеличения
Название: 4.JPG
Просмотров: 1764
Размер:	71.4 Кб
ID:	638  

__________________
Когда-нибудь на оффе поставят Mangos...

Последний раз редактировалось partizanes; 08.09.2010 в 12:00.
partizanes вне форума   Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
alien (09.09.2010), Feel the Power (07.09.2010), KiriX (07.09.2010), Konctantin (26.10.2014), Mayss (30.12.2010), srv38 (08.09.2010)