# Отладка прикладного решения ```{warning} Экспериментальная функция, работает только на Java 21. Работа в изолированных контурах не гарантируется. ``` Иногда программную ошибку не получается воспроизвести на тестовых стендах. В таких случаях, gs-ctk позволяет создать среду для отладки прикладного решения в условиях, максимально приближенных к тем, в которых работает основной кластер. Для этого создается под, в котором стартует тот же сервер приложений, что и обычно, но с включенной подсистемой отладки Java. В поде также есть дополнительный сопровождающий контейнер со средой OpenVSCode Server, подключенной к данной подсистеме. Обычные пользователи не могут подключиться к данному поду без особой ссылки. ## Инструкция по отладке Требования: - gs-ctk версии `>=5.0` - настроенная работающая группа ресурсов с включенными книгами ресурсов `global_server_share` и `haproxy` - наличие в комплекте приложений архива `appsrc.zip`, содержащего исходные файлы проекта. 1. Администратор включает отладку при помощи команды nscli: ```bash ~/nscli $ ./cloud_debugger.sh --namespace gs-ctk start --group [имя группы ресурсов] ``` ```text Точка во времени в формате эпохи Unix, до которой будет доступен отладчик (или укажите от текущего момента указав в качестве значения "+N", где N - время в секундах):+3600 Запускаем облачный отладчик! Облачный отладчик будет доступен до 10:25:54 UTC 19.03.2025 Ожидаем готовности облачного отладчика... Ожидаем готовности облачного отладчика... Ожидаем готовности облачного отладчика... Облачный отладчик готов к использованию! Для доступа к отладчику перейдите по ссылке: (http://example.ru)/debugger/open/gs-cluster-1-debugger-1b0e4084?debugger%2Fvscode%2F%3Ftkn%3Dba0211cf-cd8a-4ba5-b2a2-a5d1791e587b%26folder%3D%2Fuser%2Fapplication Чтобы подключиться к серверу приложений, связанному с отладчиком, перейдите по ссылке: (http://example.ru)/debugger/open/gs-cluster-1-debugger-1b0e4084?login%2Flogin.html ``` Подстроку `(https://example.ru)` надо подменить на имя хоста, к которому обращается пользователь для подключения к HAProxy. Например: ```text https://globalerp.mycompany.ru/debugger/open/gs-cluster-1-debugger-1b0e4084?debugger%2Fvscode%2F%3Ftkn%3Dba0211cf-cd8a-4ba5-b2a2-a5d1791e587b%26folder%3D%2Fuser%2Fapplication ``` 2. Администратор передает ссылки лицам, проводящим отладку (далее - разработчикам). 3. Разработчик переходит в отладчик и на сервер приложений по ссылкам. ![Внешний вид облачного отладчика](img/vscode-preview.png) 4. Разработчик подтверждает, что он находится в доверенном каталоге `/user/application`, и переходит во вкладку Metals на боковой панеле. 5. В течении 30 секунд должна начаться индексация проекта. Дождитесь завершения. После этого в верхней части вкладки Metals появится список используемых модулей и библиотек. ![Дождитесь завершения индексации](img/vscode-indexing.png) Если индексация не началась, или после ее завершения модули не появились, нажмите "Import build" в секции "Build Commands" вкладки Metals. ![Библиотеки и модули успешно подгрузились](img/vscode-packages.png) 6. Разработчик открывает нужные модули или библиотеки, устанавливает точки остановы, кликая слева от номера нужной строки. 7. Разработчик переходит на вкладку Run and Debug боковой панели, нажимает кнопку "Start Debugging". ![Кнопка запуска отладки](img/vscode-debug.png) Отладчик включен и подключен к серверу приложений, интерфейс которого доступен через вторую ссылку. Лог сервера приложений доступен по адресу `/user/application/globalserver.log`. ## Безопасность В ссылку для отладчика вписан токен для подключения, который используется для авторизации в OpenVSCode Server. Следовательно, без этой ссылки подключиться к отладчику невозможно. В будущих версиях, способ авторизации может измениться. OpenVSCode Server работает в отдельном контейнере от имени непривилегированного пользователя, не имеет прямого доступа к секретам и файловым системам других контейнеров. Доступ к логам и подсистеме отладки предоставляет пользователю OpenVSCode Server широкие возможности по взаимодействию с системой. В будущем они будут ограничены специальным прокси-сервером протокола отладки.