diff --git a/locale/ru/docs/guides/debugging-getting-started.md b/locale/ru/docs/guides/debugging-getting-started.md new file mode 100644 index 0000000000000..685c4c13818f2 --- /dev/null +++ b/locale/ru/docs/guides/debugging-getting-started.md @@ -0,0 +1,247 @@ +--- +title: Отладка - Начало Работы +layout: docs.hbs +--- + +# Руководство по отладке + +Это руководство поможет вам начать отладку ваших приложений и скриптов Node.js. + +## Активация инспектора + +При запуске с аргументом `--inspect` процесс Node.js прослушивает клиент отладки. +По умолчанию клиент прослушивается на хосте 127.0.0.1 с портом 9229. +Каждому процессу также назначается уникальный [UUID][]. + +Клиенты инспектора должны знать и указывать адрес хоста, порт и UUID для подключения. +Полный URL будет выглядеть примерно так: +`ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`. + +Процесс Node.js также начнет прослушивать сообщения отладки, если он получит +сигнал `SIGUSR1`. (`SIGUSR1` не доступен в среде Windows.) В Node.js версии 7 +и ниже это активирует устаревший Debugger API. В Node.js версии 8 и выше будет +активирован Inspector API. + +--- +## Последствия для безопасности + +Так как дебаггер имеет полный доступ к среде выполнения Node.js, злоумышленник, +способный подключиться к этому порту, сможет выполнить произвольный код от имени +процесса Node. Поэтому важно понимать последствия для безопасности при обличении +порта отладчика в публичных и частных сетях. + +### Публичное обличение порта отладки небезопасно + +Если отладчик привязан к какому-либо публичному IP-адресу, или к 0.0.0.0, любой клиент, +способный достичь вашего IP-адреса сможет подключиться к отладчику без каких-либо +ограничений и сможет запускать произвольный код. + +По умолчанию `node --inspect` привязывается к 127.0.0.1. Чтобы разрешить внешние подключения, +вы должны явно предоставить общедоступный IP-адрес или 0.0.0.0 и т.д. Однако это может +подвергнуть приложение потенциально значительной угрозе его безопасности. Мы предлагаем +вам обеспечить наличие файрволов и других соответствующих средств контроля доступа для +того, чтобы предотвратить такую угрозу. + +См. раздел '[Включение сценариев удаленной отладки](#enabling-remote-debugging-scenarios)', который +включает рекомендации о том, как безопасно подключить удаленные клиенты отладчика. + +### Локальные приложения имеют полный доступ к инспектору + +Даже если вы привязали порт инспектора к 127.0.0.1 (по умолчанию), любые приложения, +запущенные локально на вашем компьютере, будут иметь неограниченный доступ. +Это сделано для того, чтобы локальные отладчики могли легко подключаться. + +### Браузеры, WebSockets, same-origin policy + +Веб-сайты, открытые в веб-браузере, могут отправлять запросы WebSocket и HTTP +в соответствии с моделью безопасности браузера. Начальное HTTP-соединение необходимо +для получения уникального идентификатора сеанса отладчика. Правило ограничения домена +(Same Origin Policy) не позволяет веб-сайтам устанавливать это HTTP-соединение. +Для дополнительной защиты от [атак DNS rebinding](https://ru.wikipedia.org/wiki/DNS_rebinding) +Node.js проверяет, что заголовки 'Host' для соединения точно указывают IP-адрес, +localhost или localhost6. + +Эти политики безопасности запрещают подключение к удаленному серверу отладки c +указанием имени хоста. Вы можете обойти это ограничение, указав либо IP-адрес, +либо используя ssh-туннели, как описано ниже. + +## Клиенты инспектора + +Несколько коммерческих и открытых инструментов могут подключаться к инспектору Node.js. +Основная информация по ним: + +### [node-inspect](https://github.com/nodejs/node-inspect) + +* Отладчик CLI, поддерживаемый Фондом Node.js, который использует [Протокол Инспектора][]. +* Соответствующая версия собирается вместе с Node.js, + можно использовать с помощью команды `node inspect myscript.js`. +* Последняя версия также может быть установлена независимо (например, `npm install -g node-inspect`) + и использоваться через `node-inspect myscript.js`. + +### [Инструменты разработчика Chrome](https://github.com/ChromeDevTools/devtools-frontend) 55+, [Microsoft Edge](https://www.microsoftedgeinsider.com) + +* **Вариант 1**: Откройте `chrome://inspect` в браузере на основе Chromium + или `edge://inspect` в браузере Edge. Нажмите кнопку Configure и убедитесь, + что нужные вам хост и порт перечислены в списке. +* **Вариант 2**: Скопируйте значение `devtoolsFrontendUrl` из вывода `/json/list` + (`curl http://localhost:9229/json/list`) или текст подсказки --inspect и откройте его в Chrome. + +### [Visual Studio Code](https://github.com/microsoft/vscode) 1.10+ + +* На панели "Отладка" (Debug) щелкните значок настроек, чтобы открыть файл `.vscode/launch.json`. + Выберите "Node.js" для первоначальной настройки. + +### [Visual Studio](https://github.com/Microsoft/nodejstools) 2017 + +* В меню выберите "Debug > Start Debugging" или нажмите `F5`. +* [Детальные инструкции](https://github.com/Microsoft/nodejstools/wiki/Debugging). + +### [JetBrains WebStorm](https://www.jetbrains.com/webstorm/) 2017.1+ и другие IDE JetBrains + +* Создайте новую конфигурацию отладки Node.js и нажмите кнопку "Debug" (`Shift+F9`). `--inspect` будет + использоваться по умолчанию для Node.js 7+. Чтобы отключить, снимите флажок + `js.debugger.node.use.inspect` в реестре IDE. + +### [chrome-remote-interface](https://github.com/cyrus-and/chrome-remote-interface) + +* Библиотека для облегчения подключения к эндпоинтам Протокола Инспектора. + +### [Gitpod](https://www.gitpod.io) +* Запустите конфигурацию отладки Node.js из представления `Debug` или нажмите `F5`. [Детальные инструкции](https://medium.com/gitpod/debugging-node-js-applications-in-theia-76c94c76f0a1) + +### [Eclipse IDE](https://eclipse.org/eclipseide) c расширением Eclipse Wild Web Developer + +* Открыв файл .js, выберите "Debug As... > Node program", или +* Создайте конфигурацию отладки, чтобы присоединить отладчик к запущенному приложению Node (уже запущенному с `--inspect`). + +--- + +## Аргументы командной строки + +В следующей таблице перечислено влияние различных runtime флагов при отладке: + +
Флаг | Значение |
---|---|
--inspect | +
+
|
+
--inspect=[host:port] | +
+
|
+
--inspect-brk | +
+
|
+
--inspect-brk=[host:port] | +
+
|
+
node inspect script.js |
+
+
|
+
node inspect --port=xxxx script.js |
+
+
|
+