Отладка (Debug)
Позволяет анализировать выполнение кода в реальном времени.
Введение
Во время написания кода часто возникает необходимость проанализировать его выполнение.
В случае Netuno можно использовать:
_out.print— чтобы показать какую-либо информацию в выводе данных (output)._log.info— чтобы показать какую-либо информацию в терминале сервера Netuno.
Однако бывают и более сложные сценарии, когда требуется более глубокий анализ, например проверить несколько значений объектов и переменных одновременно, протестировать выполнение конкретного кода в этом контексте — всё для того, чтобы лучше понять поведение.
В таких более сложных случаях всегда можно использовать показанные выше методы, такие как
_out.print и _log.info, но это может превратиться в очень трудоёмкий и запутанный процесс,
прежде чем удастся достичь хорошего понимания происходящего.
Отладка (debug) как раз и служит для того, чтобы обеспечить хорошее понимание происходящего, особенно в более сложных ситуациях.
Отладка (в английском: debugging, debug) — это процесс, используемый при разработке для поиска и устранения дефектов, сбоев, неправильного поведения и т.д.
Отладку можно разделить на 3 важных механизма:
- Точка останова (Break Point): останавливает выполнение кода, после чего можно начать исследование в том месте, где код остановлен.
- Наблюдение (Watch): позволяет наблюдать значения переменных в месте остановки кода.
- Выполнение кода (Code Execution): можно временно выполнить любой код, чтобы провести какую-либо проверку в точке, где выполнение приостановлено для отладки.
Точка останова (Breakpoint)
Точка останова (breakpoint) — это место в коде, где выполнение должно быть приостановлено для запуска процесса отладки.
Чтобы начать отладку в любом коде и на любом языке, поддерживаемом Netuno, таком как JavaScript, Python, Ruby, Kotlin или Groovy, в месте, где нужно начать отладку, добавьте следующий код:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
_exec.debug()
_exec.debug()
_exec.debug()
_exec.debug()
_exec.debug()
_exec.debug()
Поскольку Netuno — полиглот, он работает с любым поддерживаемым языком, таким как: JavaScript, Python, Kotlin, Ruby или Groovy.
Теперь, чтобы начать отладку, выполните код, и выполнение остановится, будет приостановлено.
Затем перейдите в интерфейс разработки, в бэк-офисе в разделе Сборка, и в меню слева будет опция:
- Отладка
Где можно найти двойную зелёную стрелку, которая означает, что при нажатии на неё выполнение может продолжиться:

Двойная зелёная стрелка прерывает паузу отладки, благодаря чему выполнение кода продолжается нормально с того места, где оно остановилось.
Наблюдение (Watch)
Для просмотра значений переменных используется жёлтая лупа.
При нажатии на жёлтую лупу можно указать имя переменной, значение которой нужно отслеживать.

Имя переменной и её текущее значение отображаются в списке; можно наблюдать за значениями нескольких переменных. Если какая-либо переменная не существует, то значения не будет.
Выполнение кода (Execute Code)
Можно внедрить код для выполнения в контексте точки останова, то есть там, где происходит отладка.
Нажмите на синий символ кода, и можно ввести код, который требуется выполнить.

Выполненный код отображается в списке ниже с указанием на то, что код был успешно выполнен; если возникла ошибка, сообщение об ошибке показывается вместе с кодом.
Настройка удалённой отладки
При локальном запуске Netuno никакая настройка обычно не требуется.
Поскольку при локальной разработке host адреса WebSocket настраивается автоматически.
В локальных адресах обычно используются такие значения host:
localhost127.0.0.1192.168.1.*— пример любого IP-адреса локальной сети.moe-prilozhenie.local.netu.no
Локальные адреса не требуют какой-либо настройки, поэтому этот шаг можно пропустить.
А в продакшене или при удалённой разработке, например в контейнере или VPN, может потребоваться указать внешний адрес (IP или домен), используемый для подключения WebSocket.
В этом случае перейдите в разрабатываемом приложении к файлу конфигурации окружения. В этом примере мы будем использовать файл окружения разработки, который находится в:
- 📂
config/_development.json
Проверьте, нет ли уже такой конфигурации; если её нет, добавьте в конец файла конфигурации (в формате JSON) параметры конфигурации внешнего адреса, который будет использоваться для подключения WebSocket, например:
{
...
"dev": {
"ws": {
"host": "dev.netuno.org"
}
},
...
}
Информацию о порте не следует добавлять к адресу
hostв WebSocket.
Также можно передать несколько адресов host в массиве:
{
...
"dev": {
"ws": {
"host": [ "moy-konteyner.dev.netuno.org", "moy-proekt.com" ]
}
},
...
}
Прокси в продакшене (NGINX)
В продакшене часто используется веб-сервер, выполняющий обратное проксирование, например NGINX.
Чтобы отладка работала через прокси, необходимо добавить специальную конфигурацию для перенаправления трафика, связанного с адресом WebSocket:
server {
listen 443 ssl;
server_name moy-proekt.com;
...
location /dev/ws/ {
proxy_pass http://127.0.0.1:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_http_version 1.1;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
add_header X-Frame-Options "";
}
}
Заключение
С помощью интерфейса отладки и команды _exec.debug() можно провести глубокое исследование
того, что происходит.
В большинстве языков и серверных технологий, особенно в скриптовых, отладка обычно невозможна или сложна.
Netuno предлагает простой способ отладки многоязычного кода, который работает с различными поддерживаемыми языками, такими как JavaScript, Python, Ruby, Kotlin и Groovy.
Позволяет выполнять отладку многоязычного кода в удалённых средах и в продакшене.
Использование отладки значительно ускоряет разработку, обеспечивая большую точность при решении проблем, и становится незаменимым инструментом — попробуйте.