Отладчик¶
Стабильность: 2 – Стабильная
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Node.js включает в себя утилиту отладки командной строки. Клиент отладчика Node.js не является полнофункциональным отладчиком, но простой степпинг и инспекция возможны.
Чтобы воспользоваться им, запустите Node.js с аргументом inspect, за которым следует путь к отлаживаемому скрипту.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Отладчик автоматически прерывается на первой исполняемой строке. Чтобы вместо этого он работал до первой точки останова (заданной оператором debugger), установите переменную окружения NODE_INSPECT_RESUME_ON_START в 1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | |
Команда repl позволяет оценивать код удаленно. Команда next переходит к следующей строке. Введите help, чтобы узнать, какие еще команды доступны.
Нажатие enter без ввода команды повторит предыдущую команду отладчика.
Наблюдатели¶
Во время отладки можно следить за значениями выражений и переменных. В каждой точке останова каждое выражение из списка наблюдателей будет оценено в текущем контексте и отображено непосредственно перед листингом исходного кода точки останова.
Чтобы начать наблюдение за выражением, введите watch('my_expression'). Команда watchers выведет активные наблюдатели. Чтобы удалить наблюдателя, введите unwatch('my_expression').
Ссылка на команду¶
Шаги¶
cont,c: Продолжить выполнениеnext,n: Следующий шагstep,s: Шаг вout,o: Шаг наружуpause: Приостановить выполнение кода (как кнопка паузы в Инструментах разработчика)
Точки останова¶
setBreakpoint(),sb(): Установить точку останова на текущей строкеsetBreakpoint(line),sb(line): Установить точку останова на определенной строкеsetBreakpoint('fn()'),sb(...): Установка точки останова на первом утверждении в теле функцииsetBreakpoint('script.js', 1),sb(...): Установить точку останова на первой строке файлаscript.js.setBreakpoint('script.js', 1, 'num < 4'),sb(...): Устанавливает условную точку останова на первой строкеscript.js, которая прерывается только тогда, когдаnum < 4оценивается вtrue.clearBreakpoint('script.js', 1),cb(...): Очистить точку останова вscript.jsна строке 1
Также можно установить точку останова в файле (модуле), который еще не загружен:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Также можно установить условную точку останова, которая прерывается только тогда, когда заданное выражение оценивается в true:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Информация¶
backtrace,bt: Печать обратной трассировки текущего кадра выполненияlist(5): Вывести исходный код скриптов с контекстом в 5 строк (по 5 строк до и после)watch(expr): Добавить выражение в список наблюденияunwatch(expr): Удалить выражение из списка наблюденияunwatch(index): Удалить выражение с определенным индексом из списка наблюденияwatchers: Список всех наблюдателей и их значений (автоматически выводится на каждой точке останова)repl: Открыть repl отладчика для оценки в контексте отладочного скриптаexec expr,p expr: Выполнить выражение в контексте отладочного скрипта и вывести его значениеprofile: Начать сеанс профилирования процессораprofileEnd: Остановить текущий сеанс профилирования процессораprofiles: Список всех завершенных сеансов профилирования процессораprofiles[n].save(filepath = 'node.cpupuprofile'): Сохранить сессию профилирования процессора на диск в формате JSONtakeHeapSnapshot(filepath = 'node.heapsnapshot'): Сделать снимок кучи и сохранить на диск в формате JSON
Контроль исполнения¶
run: Запуск скрипта (автоматически запускается при старте отладчика)restart: Перезапустить скриптkill: Убить скрипт
Различные¶
scripts: Список всех загруженных скриптовversion: Отображение версии V8
Расширенное использование¶
Интеграция инспектора V8 для Node.js¶
Интеграция V8 Inspector позволяет прикрепить Chrome DevTools к экземплярам Node.js для отладки и профилирования. Он использует протокол Chrome DevTools Protocol.
V8 Inspector можно включить, передав флаг --inspect при запуске приложения Node.js. Также можно указать пользовательский порт с этим флагом, например, --inspect=9222 будет принимать соединения DevTools на порту 9222.
Чтобы прервать работу на первой строке кода приложения, передайте флаг --inspect-brk вместо --inspect.
1 2 3 | |
(В приведенном примере UUID dc9010dd-f8b8-4ac5-a510-c1a114ec7d29 в конце URL генерируется на лету, он меняется в разных сеансах отладки).
Если браузер Chrome старше 66.0.3345.0, используйте inspector.html вместо js_app.html в приведенном выше URL.
Chrome DevTools пока не поддерживает отладку рабочих потоков. Для их отладки можно использовать ndb.