chrome.debugger

説明

chrome.debugger API は、Chrome のリモート デバッグ プロトコルの代替トランスポートとして機能します。chrome.debugger を使用して 1 つ以上のタブにアタッチし、ネットワーク インタラクションの測定、JavaScript のデバッグ、DOM や CSS の変更などを行います。デバッグ対象の tabId を使用して、sendCommand でタブをターゲットにし、onEvent コールバックから tabId でイベントをルーティングします。

権限

debugger

この API を使用するには、拡張機能のマニフェストで "debugger" 権限を宣言する必要があります。

{
  "name": "My extension",
  ...
  "permissions": [
    "debugger",
  ],
  ...
}

セキュリティ上の理由から、chrome.debugger API ではすべての Chrome DevTools プロトコル ドメインにアクセスできるわけではありません。使用できるドメイン: AccessibilityAuditsCacheStorageConsoleCSSDatabaseDebuggerDOMDOMDebuggerDOMSnapshotWebAudioWebAuthn

この API を試すには、chrome-extension-samples リポジトリからデバッガ API の例をインストールします。

Debuggee

デバッグ対象の識別子。tabId、extensionId、targetId のいずれかを指定する必要があります

プロパティ

  • extensionId

    string(省略可)

    デバッグする拡張機能の ID。拡張機能の背景ページにアタッチできるのは、--silent-debugger-extension-api コマンドライン スイッチが使用されている場合のみです。

  • tabId

    number(省略可)

    デバッグするタブの ID。

  • targetId

    string(省略可)

    デバッグ ターゲットの不透明な ID。

DebuggerSession

保留中

デバッガ セッション ID。tabId、extensionId、targetId のいずれかを指定する必要があります。また、オプションの sessionId を指定できます。onEvent から送信された引数に sessionId が指定されている場合、そのイベントはルート デバッグ対象セッション内の子プロトコル セッションから発生したものです。sendCommand に渡される際に sessionId が指定された場合、ルート デバッグ対象セッション内の子プロトコル セッションをターゲットにします。

プロパティ

  • extensionId

    string(省略可)

    デバッグする拡張機能の ID。拡張機能の背景ページにアタッチできるのは、--silent-debugger-extension-api コマンドライン スイッチが使用されている場合のみです。

  • sessionId

    string(省略可)

    Chrome DevTools プロトコル セッションの不透明な ID。tabId、extensionId、または targetId によって識別されるルート セッション内の子セッションを識別します。

  • tabId

    number(省略可)

    デバッグするタブの ID。

  • targetId

    string(省略可)

    デバッグ ターゲットの不透明な ID。

DetachReason

Chrome 44 以降

接続終了の理由。

列挙型

"target_closed"

"canceled_by_user"

TargetInfo

デバッグ ターゲットの情報

プロパティ

  • 接続済み

    boolean

    デバッガがすでにアタッチされている場合は true。

  • extensionId

    string(省略可)

    type = 'background_page' に定義される拡張機能 ID。

  • faviconUrl

    string(省略可)

    ターゲットのファビコン URL。

  • id

    文字列

    ターゲット ID。

  • tabId

    number(省略可)

    type == 'page' の場合に定義されるタブ ID。

  • title

    文字列

    ターゲット ページのタイトル。

  • ターゲット タイプ。

  • URL

    文字列

    ターゲット URL。

TargetInfoType

Chrome 44 以降

ターゲット タイプ。

列挙型

Methods

attach()

Promise
chrome.debugger.attach(
  target: Debuggee,
  requiredVersion: string,
  callback?: function,
)

指定されたターゲットにデバッガをアタッチします。

パラメータ

  • ターゲット

    アタッチ先のデバッグ ターゲット。

  • requiredVersion

    文字列

    必要なデバッグ プロトコル バージョン(「0.1」)。デバッグ対象には、一致するメジャー バージョンとそれ以降のマイナー バージョンを持つデバッグ対象にのみアタッチできます。プロトコル バージョンのリストはこちらで入手できます。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    ()=>void

戻り値

  • Promise<void>

    Chrome 96 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

detach()

Promise
chrome.debugger.detach(
  target: Debuggee,
  callback?: function,
)

指定されたターゲットからデバッガを切断します。

パラメータ

  • ターゲット

    接続解除するデバッグ ターゲット。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    ()=>void

戻り値

  • Promise<void>

    Chrome 96 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

getTargets()

Promise
chrome.debugger.getTargets(
  callback?: function,
)

使用可能なデバッグ ターゲットのリストを返します。

パラメータ

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (result: TargetInfo[])=>void

    • 件の結果

      使用可能なデバッグ ターゲットに対応する TargetInfo オブジェクトの配列。

戻り値

  • Promise<TargetInfo[]>

    Chrome 96 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

sendCommand()

Promise
chrome.debugger.sendCommand(
  target: DebuggerSession,
  method: string,
  commandParams?: object,
  callback?: function,
)

指定されたコマンドをデバッグ ターゲットに送信します。

パラメータ

  • ターゲット

    コマンドを送信するデバッグ ターゲット。

  • method

    文字列

    メソッド名。リモート デバッグ プロトコルで定義されているメソッドのいずれかにする必要があります。

  • commandParams

    オブジェクト 省略可

    リクエスト パラメータを含む JSON オブジェクト。このオブジェクトは、指定されたメソッドのリモート デバッグ パラメータ スキームに準拠している必要があります。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (result?: object)=>void

    • 件の結果

      オブジェクト 省略可

      JSON オブジェクトを返します。レスポンスの構造はメソッド名によって異なり、リモート デバッグ プロトコルのコマンドの説明の returns 属性で定義されます。

戻り値

  • Promise<object|undefined>

    Chrome 96 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

イベント

onDetach

chrome.debugger.onDetach.addListener(
  callback: function,
)

ブラウザがタブのデバッグ セッションを終了したときに呼び出されます。これは、タブを閉じているとき、または接続されたタブに対して Chrome DevTools が呼び出されているときに発生します。

パラメータ

onEvent

chrome.debugger.onEvent.addListener(
  callback: function,
)

デバッグ ターゲットがインストルメンテーション イベントを発行するたびに呼び出されます。

パラメータ

  • callback

    機能

    callback パラメータは次のようになります。

    (source: DebuggerSession,method: string,params?: object)=>void

    • method

      文字列

    • params

      オブジェクト 省略可