Перейти к основному содержанию
`Ctrl`+`K`

# Отладка прикладного решения

Предупреждение

Работает только на Java 21.

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

Для этого создается под, в котором стартует тот же сервер приложений, что и обычно, но с включенной подсистемой отладки Java. В поде также есть дополнительный сопровождающий контейнер со средой OpenVSCode Server, подключенной к данной подсистеме. Обычные пользователи не могут подключиться к данному поду без особой ссылки.

## Требования

- gs-ctk версии `>=5.1.4` (проверить командой: `cat ~/nscli/version.txt`)

- Минимальные ресурсы: 12 ГБ ОЗУ, 4 ядра CPU

- Настроенная работающая группа ресурсов с включенными книгами ресурсов `global_server_share` и `haproxy`

- Наличие в комплекте приложений архива `appsrc.zip`, содержащего исходные файлы проекта

## Инструкция по отладке

### Запуск отладчика

1. Администратор включает отладку при помощи команды nscli:

       ~/nscli $ ./cloud_debugger.sh --namespace gs-ctk start

       Укажите группу ресурсов:gs-cluster-1
       Выберите книгу ресурсов, которую необходимо взять за основу облачного отладчика:global-server-share
       Укажите название для отладчика:debugger-5edafd63
       Точка во времени в формате эпохи Unix, до которой будет доступен отладчик (или укажите от текущего момента указав в качестве значения
       "+N", где N - время в секундах):+3600
       Облачный отладчик будет доступен до 03:14:08 19.01.2038
       Ожидаем готовности облачного отладчика...
       Ожидаем готовности облачного отладчика...
       Ожидаем готовности облачного отладчика...
       Облачный отладчик готов к использованию!

       Для доступа к отладчику перейдите по ссылке:
       (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. Например:

       https://globalerp.mycompany.ru/debugger/open/gs-cluster-1-debugger-1b0e4084?debugger%2Fvscode%2F%3Ftkn%3Dba0211cf-cd8a-4ba5-b2a2-a5d1791e587b%26folder%3D%2Fuser%2Fapplication

### Управление отладчиками

Для просмотра списка активных отладчиков:

    ./cloud_debugger.sh --namespace gs-ctk list

Для удаления отладчика:

    ./cloud_debugger.sh delete --namespace gs-ctk --group my-group --book debugger-mydebugger

### Подключение к отладчику

2. Администратор передает ссылки разработчикам (или другим лицам, проводящим отладку).

3. Разработчик переходит в отладчик и на сервер приложений по ссылкам.

   Важно: Используйте HTTPS для подключения. При проблемах с аутентификацией (циклическая переадресация) очистите cookies браузера.

4. Разработчик подтверждает, что он находится в доверенном каталоге `/user/application`, и переходит во вкладку Metals на боковой панеле.

5. В течении 30 секунд должна начаться индексация проекта. Дождитесь завершения. После этого в верхней части вкладки Metals появится список используемых модулей и библиотек.

   Если индексация не началась, или после ее завершения модули не появились, нажмите «Import build» в секции «Build Commands» вкладки Metals.

6. Разработчик открывает нужные модули или библиотеки, устанавливает точки остановы, кликая слева от номера нужной строки.

7. Разработчик переходит на вкладку Run and Debug боковой панели, нажимает кнопку «Start Debugging».

Отладчик включен и подключен к серверу приложений, интерфейс которого доступен через вторую ссылку. Лог сервера приложений доступен по адресу `/user/application/globalserver.log`.

## Устранение проблем

### Проблема с аутентификацией

Если после успешной авторизации происходит переадресация на страницу входа:

- Очистите cookies браузера для домена отладчика

- Используйте для подключения только протокол HTTPS

## Безопасность

В ссылку для отладчика вписан токен для подключения, который используется для авторизации в OpenVSCode Server. Следовательно, без этой ссылки подключиться к отладчику невозможно.

В будущих версиях, способ авторизации может измениться.

OpenVSCode Server работает в отдельном контейнере от имени непривилегированного пользователя, не имеет прямого доступа к секретам и файловым системам других контейнеров.

Доступ к логам и подсистеме отладки предоставляет пользователю OpenVSCode Server широкие возможности по взаимодействию с системой. В будущем они будут ограничены специальным прокси-сервером протокола отладки.