Отладка адаптера

Адаптер — это программа на Node.js, поэтому её можно приостанавливать и пошагово выполнять с помощью стандартных инструментов. В Node.js есть встроенный отладчик; вам просто нужно получить к нему доступ.

Три пути, от рекомендуемого до последнего средства:

ПрочьКогда
dev-серверВ процессе разработки. Отдельная небольшая установка в папке проекта.dev-server debug См. dev-server .
iobroker debugЕсли ошибка возникает только в реальной системе, с её конфигурацией и данными.
Запуск вручнуюЕсли вы хотите точно контролировать, как запускается этот процесс.

Встроенный путь:iobroker debug

iobroker debug sayit
iobroker debug sayit.1

Команда ищет адаптер, запускает его основной файл с помощью инспектора узлов и подключается к нему. Если экземпляр уже запущен, она прерывает выполнение с сообщением: один экземпляр не может быть запущен дважды. Поэтому перед этим...iobroker stop sayit.0 .

вариантЭффект
--waitВместо того чтобы позволить адаптеру завершить работу, программа немедленно останавливается на первой строке. Это необходимо, если ошибка возникает при запуске.
--ip <adresse>Адрес, по которому инспектор обязан явиться. Без указания конкретного адреса, только...127.0.0.1 .
--port <nummer>Инспекторский порт, или 9229.

Вручную

То же самое, но без команды:

cd /opt/iobroker
iobroker stop sayit
node --inspect node_modules/iobroker.sayit/main.js 0 --debug

Важны две вещи:--inspect Он должен располагаться перед основным файлом; это опция самого Node.js. А адаптеру нужен номер экземпляра и--debug в качестве собственных аргументов, в противном случае он пытается войти в систему контроллера.

--inspect-brk вместо--inspect Оно останавливается на первой строке.

Подключиться через Chrome

В Chrome есть встроенный отладчик. В адресной строке:

chrome://inspect

Запущенный адаптер отображается в разделе «Удалённая цель» ; нажатие кнопки «Проверить» открывает инструменты разработчика. При этом отображаются точки останова и условия их установки.watch Доступны трассировка стека вызовов, отображение переменных и консоль, так что всё, что вам известно при отладке в браузере, доступно.

Если ioBroker запущен на другом компьютере, его адрес необходимо ввести один раз в разделе «Настройка» , используя тот же порт, что и при запуске.

Использование Visual Studio Code

Откройте папку адаптера и в.vscode/launch.json Создайте две конфигурации:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Adapter starten",
            "program": "${workspaceFolder}/main.js",
            "args": ["0", "--debug"]
        },
        {
            "type": "node",
            "request": "attach",
            "name": "An laufenden Adapter anhängen",
            "address": "127.0.0.1",
            "port": 9229
        }
    ]
}

Запуск адаптера приводит к его выполнению из VS Code. Для этого необходимо остановить экземпляр адаптера.iobroker stop <name>.0 ).

Отладка в VS Code

Подключение к работающему адаптеру означает подключение к уже подключенному адаптеру.--inspect Это также работает на другом компьютере. В этом случае вместо IP-адреса компьютера, на котором работает ioBroker, отображается именно он.127.0.0.1 .

Прикрепить к процессу

С помощью WebStorg

Для работы WebStorm требуется конфигурация выполнения Node.js. Инструкции по ее настройке можно найти в разделе WebStorm .

Отладка по сети

Для подключения другого компьютера инспектор должен прослушивать доступный адрес:

node --inspect-brk=0.0.0.0:9229 node_modules/iobroker.sayit/main.js 0 --debug

Инспектор — это не интерфейс отладки, а открытая дверь. Любой, кто к нему подключится, сможет выполнить произвольный код на компьютере. Нет ни входа в систему, ни пароля.0.0.0.0 Поэтому его следует использовать только в доверенной сети, никогда не перенаправлять на маршрутизатор, а после этого адаптер следует перезагрузить в обычном режиме. Всем, кому необходимо использовать незащищенную сеть, следует перенаправить порт через SSH.ssh -L 9229:127.0.0.1:9229 benutzer@iobroker-rechner Затем инспектор остается на целевом компьютере.127.0.0.1 граница.