Описание
 API chrome.debugger служит альтернативным транспортом для протокола удалённой отладки Chrome. Используйте chrome.debugger для подключения к одной или нескольким вкладкам для мониторинга сетевого взаимодействия, отладки JavaScript, изменения DOM и CSS и других задач. Используйте свойство tabId объекта Debuggee для выбора вкладок с помощью sendCommand и маршрутизации событий по tabId из обратных вызовов onEvent .
Разрешения
debuggerПримечание по безопасности
 Из соображений безопасности API chrome.debugger не предоставляет доступ ко всем доменам протокола Chrome DevTools. Доступны следующие домены: Accessibility , Audits , CacheStorage , Console , CSS , Database , Debugger , DOM , DOMDebugger , DOMSnapshot , Emulation , Fetch , IO , Input , Inspector , Log , Network , Overlay , Page , Performance , Profiler , Runtime , Storage , Target , Tracing , WebAudio и WebAuthn .
Манифест
 Для использования этого API необходимо объявить разрешение "debugger" в манифесте вашего расширения.
{
  "name": "My extension",
  ...
  "permissions": [
    "debugger",
  ],
  ...
}
Примеры
Чтобы опробовать этот API, установите пример API отладчика из репозитория chrome-extension-samples .
Типы
Debuggee
Идентификатор отлаживаемого объекта. Необходимо указать tabId, extensionId или targetId.
Характеристики
- extensionIdстрока необязательная Идентификатор расширения, которое вы собираетесь отлаживать. Присоединение к фоновой странице расширения возможно только при использовании ключа командной строки --silent-debugger-extension-api.
- tabIdномер необязательно Идентификатор вкладки, которую вы собираетесь отладить. 
- targetIdстрока необязательная Непрозрачный идентификатор цели отладки. 
DebuggerSession
 Идентификатор сеанса отладчика. Необходимо указать один из следующих вариантов: tabId, extensionId или targetId. Кроме того, можно указать необязательный sessionId. Если для аргументов, отправляемых функцией onEvent , указан sessionId , это означает, что событие исходит из сеанса дочернего протокола внутри корневого сеанса отлаживаемого объекта. Если sessionId указан при передаче в sendCommand , он будет направлен на сеанс дочернего протокола внутри корневого сеанса отлаживаемого объекта. 
Характеристики
- extensionIdстрока необязательная Идентификатор расширения, которое вы собираетесь отлаживать. Присоединение к фоновой странице расширения возможно только при использовании ключа командной строки --silent-debugger-extension-api.
- sessionIdстрока необязательная Непрозрачный идентификатор сеанса протокола Chrome DevTools. Идентифицирует дочерний сеанс внутри корневого сеанса, определяемого tabId, extensionId или targetId. 
- tabIdномер необязательно Идентификатор вкладки, которую вы собираетесь отладить. 
- targetIdстрока необязательная Непрозрачный идентификатор цели отладки. 
DetachReason
Причина разрыва соединения.
Перечисление
 "target_closed"   "отменено_пользователем" 
TargetInfo
Отладочная целевая информация
Характеристики
- прикрепилбулев True, если отладчик уже подключен. 
- extensionIdстрока необязательная Идентификатор расширения, определяемый, если type = 'background_page'. 
- faviconUrlстрока необязательная URL-адрес целевого значка. 
- идентификаторнить Идентификатор цели. 
- tabIdномер необязательно Идентификатор вкладки, определяемый, если type == 'page'. 
- заголовокнить Заголовок целевой страницы. 
- типТип цели. 
- URL-адреснить Целевой URL. 
TargetInfoType
Тип цели.
Перечисление
 "страница"   "background_page"   "работник"   "другой" 
Методы
attach()
chrome.debugger.attach(
target: Debuggee,
requiredVersion: string,
callback?: function,
): Promise<void>
Присоединяет отладчик к указанной цели.
Параметры
- цельЦель отладки, к которой вы хотите присоединитьс. 
- requiredVersionнить Требуемая версия протокола отладки ("0.1"). Подключиться можно только к отлаживаемому объекту с совпадающей основной версией и большей или равной ей дополнительной версией. Список версий протокола можно получить здесь . 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 96+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
detach()
chrome.debugger.detach(
target: Debuggee,
callback?: function,
): Promise<void>
Отключает отладчик от заданной цели.
Параметры
- цельЦель отладки, от которой вы хотите отсоединиться. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 96+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
getTargets()
chrome.debugger.getTargets(
callback?: function,
): Promise<TargetInfo[]>
Возвращает список доступных целей отладки.
Параметры
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(result: TargetInfo[]) => void - результатTargetInfo [] Массив объектов TargetInfo, соответствующих доступным целям отладки. 
 
Возврат
- Обещание< TargetInfo []> Хром 96+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
sendCommand()
chrome.debugger.sendCommand(
target: DebuggerSession,
method: string,
commandParams?: object,
callback?: function,
): Promise<object | undefined>
Отправляет заданную команду в цель отладки.
Параметры
- цельЦель отладки, которой вы хотите отправить команду. 
- методнить Имя метода. Должно быть одним из методов, определённых протоколом удалённой отладки . 
- commandParamsобъект необязательный JSON-объект с параметрами запроса. Этот объект должен соответствовать схеме параметров удалённой отладки для данного метода. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(result?: object) => void - результатобъект необязательный JSON-объект с ответом. Структура ответа зависит от имени метода и определяется атрибутом return в описании команды в протоколе удалённой отладки. 
 
Возврат
- Обещание<объект | неопределенный> Хром 96+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
События
onDetach
chrome.debugger.onDetach.addListener(
callback: function,
)
Возникает, когда браузер завершает сеанс отладки для вкладки. Это происходит либо при закрытии вкладки, либо при вызове Chrome DevTools для прикреплённой вкладки.
Параметры
- перезвонитьфункция Параметр callbackвыглядит так:(source: Debuggee, reason: DetachReason) => void - источник
- причина
 
onEvent
chrome.debugger.onEvent.addListener(
callback: function,
)
Запускается всякий раз, когда отладочная цель выдает событие инструментирования.
Параметры
- перезвонитьфункция Параметр callbackвыглядит так:(source: DebuggerSession, method: string, params?: object) => void - источник
- методнить 
- параметрыобъект необязательный