Jump to content
Sign in to follow this  

Запуск сборки Lineage 2 в режиме отладки


Description

Гайд предназначен для тех, кто все еще пытается дебажить c помощью System.out.println, но уже осведомлен в целом о JAVA разработке, и немного умеет пользоваться IDE. В гайде рассказано как запускать ява эмулятор в режиме отладки, на примере геймсервера, используя IDE IntelliJ IDEA.

Приветствую всех начинающих JAVA разработчиков.
Гайд предназначен для тех, кто все еще пытается дебажить c помощью System.out.println, но уже осведомлен в целом о JAVA разработке, и немного умеет пользоваться IDE

Дебагинг один из важнейших и трудозатратных процессов после самой разработки, и очень важно чтобы этот процесс был максимально удобен для разработчика.
Большинство современных IDE имеют встроенный функционал отладки, который позволяет приостаналивать приложение в определенные моменты выполнения и просматривать\изменять память с помощью т.н брейкпоинтов.

В данном гайде я расскажу как запускать ява эмулятор или "сборку" в режиме отладки и использовать инструменты отладчика на примере IDE IntelliJ IDEA.

Часть #1 - "Быстрый запуск, удаленная отладка"

Я расскажу о двух вариантах отладки, первым из них будет "удаленная отладка"
Этот вариант, позволяет вашей IDE удаленно подключаться к приложению с помощью спец. инструментов java
Пусть слово "удаленная" вас не пугает, формально это будет сетевое подключение, но происходить оно будет локально в пределах вашего ПК.

Шаг 1. Параметры запуска.
Для того, чтобы запустить Ваш сервер в режиме ожидающий отладки, в параметры запуска ява приложение необходимо добавить следующие значения
Это делается соотвественно в .bat или .sh файле

-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=7456

Шаг 2. Добавляем конфигурацию запуска в IntelliJ IDEA

В главном меню переходим в раздел Run -> Edit configuration

Screenshot_12.png.7a8459694b67f0562b799a70f0048592.png

В левом верхнем углу нажимаем на "плюсик" и из выпадающего списка выбираем "Remote"

Screenshot_13.png.0e8cf0d915da1cefc1130efa9398c623.png
Пишем удобное для Вас название (к примеру "DebugGameserverRemote", в поле "Host" вводим "localhost, в поле "Port" - "7456"
Сохраняем.

Screenshot_14.thumb.png.0c7fddbf140f084032e0f8f0e6a3f6c7.png

Шаг 3. Запуск

Перед запуском сборки убедитесь, что исполняться будет последнее собраное ядро (если что-то изменяли, пересоберите ядро и замените в папке с сервером).
Запускайте сборку с помощь .bat или .sh файла, вы получите сообщение о том, что ожидаеться подключение дебагера.

Screenshot_16.png.ce7c41f52a3c2969e29733ed28028b4a.png
В IntelliJ IDEA в главном меню переходим в раздел Run, и выбираем "Debug DebugGameserverRemote" - Или там будет любое название, которое вы написали при создании конфигурации.

Screenshot_15.png.12714fcb9ea9f8b6b9b726eb9db3e3a6.png
IDE подключилась к приложению, сборка продолжает запускаться.

Screenshot_18.png.432925dc766691611efd6ad8fa9bb199.pngScreenshot_17.png.1e7125168421a3e3be8bcc066954b504.png

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

Часть #2 - "Автоматизация или "Лень - двигатель прогресса"
Каждый раз копировать новое ядро, запускать сборку с помощью .bat\.sh файла - нормально, но со временем понимаешь, что и это не совсем удобно.

Следующий вариант запуска в режиме отладки - запуск прямо из IntelliJ IDEA. Дополнительно перед каждым запуском будем автоматически собирать новое ядро

Шаг 1. Артефакты.

Собирать будем средствами IDE, это еще незывают "сборкой артефакта"
В главном меню переходим в раздел File -> Project Structure

Screenshot_20.png.04087e98e0f7ad27a0b7342f5030523b.png
Выбираем раздел Artifacts, нажимаем на плюсик для создания нового артефакта, выбераем JAR -> From module with dependencies

Screenshot_21.png.9d3b3c2ab0c80be5dbf9c398f62099e5.png
Пишем удобное название ( к примеру "gameserver:jar-test_server")
В поле Output Directory указываем путь, где лежит ядро вашей тестовой сборки, в моем случае это "D:\test_server\lib"
В поле Main class вводим полное название главного класса (класс, который содержит метод main()), подсмотреть его можно из .bat\.sh файла
Сохраняем.

 

Screenshot_22.thumb.png.7f324ac9b69328d10691acec69f14117.png

 

Таким образом, можно собирать любые JAR библиотеки, отказывашись от других сборщиков типа ANT

Шаг 2. Добавляем конфигурацию запуска в IntelliJ IDEA

В главном меню переходим в раздел Run -> Edit configuration (см выше, в первой части)
В левом верхнем углу нажимаем на "плюсик" и из выпадающего списка выбераем "Application"

Screenshot_19.png.482112dc61c1fb30246932057f363acd.png
Вводим удобное для Вас название (к примеру "Gameserver-test_server")
В поле Main class вводим полное название главного класса (класс, который содержит метод main()), подсмотреть его можно из .bat\.sh файла
В поле VM options нужно прописать classpath (-cp) с нужными зависимостями для вашей сборки, а так же другие параметры при необходимости. Подсмотреть эти параметры можно в .bat\.sh файле
В поле Working Directory указываем путь, к корневой папке, из которой запускается ваш тестовый гейм-сервер (путь, где лежат .bat\.sh файлы запуска). В моем случае это "D:\test_server\gameserver"
Use classpath of module - выбираем модуль с исходниками геймсервера

В самом низу окна есть раздел "Before launch" - действия, которые будут выполняться перед запуском (там уже по умолчанию должен быть Build). Нажимаем на зеленый плюсик, выбираем "Build artifacts"
в появившемся окне выбираем ранее созданный артефакт "gameserver:jar-test_server"

Конфигурация готова, сохраняем

ПС. на ворнинг на моем скрине не обращайте внимания, глюк IDE после переименования пакета. У вас ошибок и варнингов быть не должно.

Screenshot_24.thumb.png.376bf74437068820cdc10b1041b36404.png

Screenshot_25.png.21185e66f9443ed7035069695e7b5afd.png

Шаг 3. Запуск

В IntelliJ IDEA в главном меню переходим в раздел Run, и выбираем "Debug Gameserver-test_server" - Или там будет любое название, которое вы написали при создании конфигурации (см. пример выше, по аналогии с первой частью)


Сборка пересобираеться, затем запускается. Можете расставлять брейпоинты и дебажить.

Screenshot_26.png.1f94c39268a3af40e8b1b5799c937b80.png

Screenshot_27.png.108235f430498a639c769da9c1838da2.png

Таким образом можно настроить билд сервера авторизации или настроить различные цепочки событий, чтобы запускать все в 1 клик.
Удачи в разработке

ПС. Если кому-то будет интересно, могу написать небольшой гайд по самому процессу отладки, брейкпоинтам, условным брейкпоинтам, ватчеру и т.д

  • Like 2
  • Haha 1
  • Upvote 7


Recommended Comments

There are no comments to display.

×
×
  • Create New...