Полный цикл в digital

Debugger for Firefox в связке с Open Server

Расширение предназначено для отладки js-кода в редакторе VS Code, это альтернатива тому, чтобы отлаживать js-код в панели разработчика браузера Firefox. Для начала работы нужно установить расширение Debugger for Firefox в разделе плагинов или открыть по ссылке Debugger for Firefox.

Для работы расширения Debugger for Firefox нужно установить браузер Firefox Developer Edition, расширенная версия браузера от компании Mozilla, которая ориентирована, в первую очередь, на веб-разработчиков.

Давайте создадим директорию project, а внутри нее еще две директории — src и dist. В директории src будут исходники, а в директории dist — готовая сборка. И откроем проект в VS Code — перенеся папку в рабочую область.

Для работы отладчика нужно создать файл конфикурации launch.json в директории project/.vscode. Но вручную его создавать не нужно, при первом запуске отладчика файл будет создан автоматически. Для этого нужно кликнуть по иконке «Запуск и отладка», потом по ссылке создать файл launch.json:

Расширение Debugger for Firefox может работать в двух режимах:

  1. launch самостоятельно запускать экземпляр Firefox
  2. attach присоедениться к уже работающему экземпляру Firefox

Подготовка к отладке

Давайте в директории project/dist создадим файл index.html, который подключает js-файл script.js. И создадим файл script.js, в котором добавим точку останова, чтобы проверить работу отладчика. Debugger for Firefox плохо умеет работать с класическими точками останова, по этой причине воспользуемся командой debugger;.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Debug</title>
<script src="script.js"></script>
</head>
<body>
<h1>Lorem ipsum</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit...</p>
</body>
</html>
function foo() {
// стек вызовов foo()
console.log('foo');
bar();
}

function bar() {
// стек вызовов foo() -> bar()
console.log('bar');
baz();
}

function baz() {
debugger;
// стек вызовов foo() -> bar() -> baz()
console.log('baz');
}

foo(); // место вызова foo()

Режим launch

Запуск отладки в режиме launch без сервера

Для начала запустим отладку без использования веб-сервера. Редактируем файл конфигурации отладчика launch.json:

{
"name": "Launch index.html", // название
"type": "firefox", // выбор дебагера
"request": "launch", // самостоятельный запуск экземпляря firefox
"port": 9222, // удаляем указанный порт в переменной firefox.port файла settings.gson и добавляем свой пустой порт
"file": "${workspaceFolder}/dist/index.html" // файл который нужно открыть для дебага
}

Конфигураций для запуска отладчика может быть несколько, выбрать нужную можно в выпадающем списке слева сверху, после чего нажать F5 для запуска отладки.

Будет запущен браузер Firefox Developer Edition, в котором будет открыт файл project/dist/index.html. Поскольку в этом html-файле подключается js-файл project/dist/script.js — выполнение остановится в точке останова:

Запуск отладки в режиме launch с Open Server

Теперь добавим вторую конфигурацию запуска отладки — уже с использованием веб-сервера:

{
"name": "Launch localhost", // название
"type": "firefox", // выбор дебагера
"request": "launch", // самостоятельный запуск экземпляря firefox
"port": 9222, // удаляем указанный порт в переменной firefox.port файла settings.gson и добавляем свой пустой порт
"url": "http://project/dist/", // url который нужно открыть для дебага
"webRoot": "${workspaceFolder}/dist/" // папка где физически лежат скрипты
}

Разумеется, перед запуском отладки надо запустить веб-сервер.

Режим attach

Запуск отладки в режиме attach без сервера

Для работы в режиме attach браузер Firefox надо подготовить. Браузеру необходимо разрешить работу в режиме отладки, это можно сделать двумя способами:

1) В настройках разработчика необходимо включить две опции показанные на картинке:

2) Или воспользоваться командой about:config:

Отфильтруйте результаты и внесите необходимые изменения, чтобы они соответствовали следующим:

  1. devtools.chrome.enabled true
  2. devtools.debugger.remote-enabled true
  3. devtools.debugger.prompt-connection false

Третий параметр, необязательный и отвечает за вывод следующего предупреждения:

Отладчик должен присоединиться к уже запущенному экземпляру Firefox и обмениваться с ним сообщениями по протоколу. При этом браузер должен быть запущен с дополнительной опцией, указывающей порт для обмена этими сообщениями. Важный момент — это должен быть единственный экземпляр Firefox, остальные должны быть закрыты.

Для этого в Windows, нужно вызвать командную строку комбинация клавиш Win+R в диалоговом окне вводим команду cmd, открывается командная строка в которую надо ввести:

"C:\Program Files\Mozilla Firefox\firefox.exe"-start-debugger-server 6000

Для этого в Linux, нужно открыть терминал и выполннить команду:

firefox -start-debugger-server 6000

Номер 6000 обозначает номер порта который будет в дальнейшем указан в файле launch.json:

{
"name": "Launch localhost", // название
"type": "firefox", // выбор дебагера
"request": "attach", // присоедениться к уже работающему экземпляру Firefox
"port": 6000 // удаляем указанный порт в переменной firefox.port файла settings.gson и добавляем свой пустой порт
}

Теперь надо открыть в браузере файл project/dist/index.html, присоединяемся к этому экземпляру Firefox из редактора VS Code:

Запуск отладки в режиме attach с Open Server

Теперь запустим отладку в режиме attach с использования сервера. Для этого добавляем четвертую конфигурацию запуска отладчика:

{
"name": "Launch localhost", // название
"type": "firefox", // выбор дебагера
"request": "attach", // присоедениться к уже работающему экземпляру Firefox
"port": 6000, // удаляем указанный порт в переменной firefox.port файла settings.gson и добавляем свой пустой порт
"url": "http://project/dist/", // url который нужно открыть для дебага
"webRoot": "${workspaceFolder}/dist/" // папка где физически лежат скрипты
}

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг