Inspector¶
Стабильность: 2 – Стабильная
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Модуль node:inspector
предоставляет API для взаимодействия с инспектором V8.
Доступ к нему можно получить с помощью:
1 |
|
1 |
|
или
1 |
|
1 |
|
Promise API¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Класс: inspector.Session
¶
- Расширяет:
<EventEmitter>
Класс inspector.Session
используется для отправки сообщений в бэкэнд инспектора V8 и получения ответов на сообщения и уведомлений.
new inspector.Session()
¶
Создайте новый экземпляр класса inspector.Session
. Сессия инспектора должна быть подключена через session.connect()
, прежде чем сообщения будут отправлены в бэкенд инспектора.
Событие: inspectorNotification
¶
<Object>
Объект сообщения уведомления
Выдается при получении любого уведомления от инспектора V8.
1 2 3 4 5 |
|
Также можно подписаться только на уведомления с определенным методом:
Событие: <inspector-protocol-method>
¶
<Object>
Объект сообщения уведомления
Выдается при получении уведомления инспектора, у которого поле method установлено в значение <inspector-protocol-method>
.
Следующий фрагмент устанавливает слушателя на событие Debugger.paused
, и печатает причину приостановки программы всякий раз, когда выполнение программы приостанавливается (например, через точки останова):
1 2 3 4 |
|
session.connect()
¶
Подключает сессию к внутренней части инспектора.
session.connectToMainThread()
¶
Подключает сессию к основному потоку инспектора back-end. Если этот API был вызван не на рабочем потоке, будет выдано исключение.
session.disconnect()
¶
Немедленное закрытие сессии. Все ожидающие обратные вызовы сообщений будут вызваны с ошибкой. session.connect()
нужно будет вызвать, чтобы снова иметь возможность отправлять сообщения. Вновь подключенная сессия потеряет все состояния инспектора, такие как включенные агенты или настроенные точки останова.
session.post(method[, params])
¶
Отправляет сообщение на внутреннюю страницу инспектора.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Последняя версия протокола инспектора V8 опубликована на Chrome DevTools Protocol Viewer.
Инспектор Node.js поддерживает все домены Chrome DevTools Protocol, объявленные V8. Домен Chrome DevTools Protocol предоставляет интерфейс для взаимодействия с одним из агентов времени выполнения, используемых для проверки состояния приложения и прослушивания событий времени выполнения.
Пример использования¶
Помимо отладчика, различные профилировщики V8 Profiler доступны через протокол DevTools.
Профилировщик процессора¶
Вот пример, показывающий, как использовать CPU Profiler:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Heap profiler¶
Вот пример, показывающий, как использовать Heap Profiler:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
API обратного вызова¶
Класс: inspector.Session
¶
- Расширяет:
<EventEmitter>
Класс inspector.Session
используется для отправки сообщений в бэкэнд инспектора V8 и получения ответов на сообщения и уведомлений.
new inspector.Session()
¶
Создайте новый экземпляр класса inspector.Session
. Сессия инспектора должна быть подключена через session.connect()
, прежде чем сообщения будут отправлены в бэкенд инспектора.
Событие: inspectorNotification
¶
<Object>
Объект сообщения уведомления
Выдается при получении любого уведомления от инспектора V8.
1 2 3 4 5 |
|
Также можно подписаться только на уведомления с определенным методом:
Событие: <inspector-protocol-method>
¶
<Object>
Объект сообщения уведомления
Выдается при получении уведомления инспектора, у которого поле method установлено в значение <inspector-protocol-method>
.
Следующий фрагмент устанавливает слушателя на событие Debugger.paused
, и печатает причину приостановки программы всякий раз, когда выполнение программы приостанавливается (например, через точки останова):
1 2 3 4 |
|
session.connect()
¶
Подключает сессию к внутренней части инспектора.
session.connectToMainThread()
¶
Подключает сессию к основному потоку инспектора back-end. Если этот API был вызван не на рабочем потоке, будет выдано исключение.
session.disconnect()
¶
Немедленное закрытие сессии. Все ожидающие обратные вызовы сообщений будут вызваны с ошибкой. session.connect()
нужно будет вызвать, чтобы снова иметь возможность отправлять сообщения. Вновь подключенная сессия потеряет все состояния инспектора, такие как включенные агенты или настроенные точки останова.
session.post(method[, params][, callback])
¶
method
<string>
params
<Object>
callback
<Function>
Отправляет сообщение на внутреннюю страницу инспектора. Функция callback
будет уведомлена, когда будет получен ответ. callback
- это функция, принимающая два необязательных аргумента: ошибку и результат, специфичный для сообщения.
1 2 3 4 5 6 |
|
Последняя версия протокола инспектора V8 опубликована на Chrome DevTools Protocol Viewer.
Инспектор Node.js поддерживает все домены Chrome DevTools Protocol, объявленные V8. Домен Chrome DevTools Protocol предоставляет интерфейс для взаимодействия с одним из агентов времени выполнения, используемых для проверки состояния приложения и прослушивания событий времени выполнения.
Вы не можете установить reportProgress
в true
при отправке команды HeapProfiler.takeHeapSnapshot
или HeapProfiler.stopTrackingHeapObjects
в V8.
Пример использования¶
Помимо отладчика, различные профилировщики V8 Profiler доступны через протокол DevTools.
Профилировщик центрального процессора¶
Вот пример, показывающий, как использовать CPU Profiler:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
Heap profiler¶
Вот пример, показывающий, как использовать Heap Profiler:
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 |
|
Общие объекты¶
inspector.close()
¶
Деактивирует инспектор. Блокируется до тех пор, пока не будет активных соединений.
inspector.console
¶
<Object>
Объект для отправки сообщений на консоль удаленного инспектора.
1 |
|
Консоль инспектора не имеет API паритета с консолью Node.js.
inspector.open([port[, host[, wait]]])
¶
port
<number>
Порт для прослушивания соединений инспектора. Необязательно. По умолчанию: то, что было указано в CLI.host
<string>
Хост, на котором будут прослушиваться соединения инспектора. Необязательно. По умолчанию: то, что было указано в CLI.wait
<boolean>
Блокировать до тех пор, пока клиент не подключится. Необязательно. По умолчанию:false
.
Активировать инспектора на хосте и порту. Эквивалентно node --inspect=[[host:]port]
, но может быть выполнено программно после запуска узла.
Если wait имеет значение true
, будет блокироваться, пока клиент не подключится к порту инспекции и управление потоком не будет передано клиенту отладчика.
Смотрите предупреждение о безопасности относительно использования параметра host
.
inspector.url()
¶
- Возвращает: {string|undefined}
Возвращает URL активного инспектора, или undefined
, если его нет.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
inspector.waitForDebugger()
¶
Блокирует до тех пор, пока клиент (существующий или подключенный позже) не отправит команду Runtime.runIfWaitingForDebugger
.
Если нет активного инспектора, будет выдано исключение.