説明
chrome.debugger API は、Chrome のリモート デバッグ プロトコルの代替トランスポートとして機能します。chrome.debugger を使用して 1 つ以上のタブに接続し、ネットワーク インタラクションの計測、JavaScript のデバッグ、DOM と CSS の変更などを行います。Debuggee プロパティ tabId を使用して、sendCommand でタブをターゲットにし、onEvent コールバックから tabId でイベントをルーティングします。
権限
debuggerセキュリティに関する注意事項
セキュリティ上の理由から、chrome.debugger API はすべての Chrome DevTools Protocol ドメインへのアクセスを提供しません。使用可能なドメインは、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 を試すには、chrome-extension-samples リポジトリからデバッガ API のサンプルをインストールします。
型
Debuggee
デバッグ対象の識別子。tabId、extensionId、targetId のいずれかを指定する必要があります
プロパティ
- 
    extensionId
文字列 省略可
デバッグする拡張機能の ID。拡張機能のバックグラウンド ページへのアタッチは、
--silent-debugger-extension-apiコマンドライン スイッチが使用されている場合にのみ可能です。 - 
    tabId
number 省略可
デバッグするタブの ID。
 - 
    targetId
文字列 省略可
デバッグ ターゲットの不透明 ID。
 
DebuggerSession
デバッガ セッション ID。tabId、extensionId、targetId のいずれかを指定する必要があります。オプションの sessionId を指定することもできます。onEvent から送信された引数に sessionId が指定されている場合、イベントはルート デバッギー セッション内の子プロトコル セッションから発生したことを意味します。sendCommand に渡されるときに sessionId が指定されている場合、ルート デバッギー セッション内の子プロトコル セッションをターゲットにします。
プロパティ
- 
    extensionId
文字列 省略可
デバッグする拡張機能の ID。拡張機能のバックグラウンド ページへのアタッチは、
--silent-debugger-extension-apiコマンドライン スイッチが使用されている場合にのみ可能です。 - 
    sessionId
文字列 省略可
Chrome DevTools Protocol セッションの不透明な ID。tabId、extensionId、targetId で識別されるルート セッション内の子セッションを識別します。
 - 
    tabId
number 省略可
デバッグするタブの ID。
 - 
    targetId
文字列 省略可
デバッグ ターゲットの不透明 ID。
 
DetachReason
接続終了の理由。
列挙型
"target_closed" 
 
"canceled_by_user" 
 
TargetInfo
デバッグ ターゲット情報
プロパティ
- 
    attached
ブール値
デバッガがすでにアタッチされている場合は true。
 - 
    extensionId
文字列 省略可
タイプが background_page の場合に定義される拡張機能 ID。
 - 
    faviconUrl
文字列 省略可
ターゲットのファビコン URL。
 - 
    id
文字列
ターゲット ID。
 - 
    tabId
number 省略可
タブ ID(type == 'page' の場合に定義)。
 - 
    title
文字列
ターゲット ページのタイトル。
 - 
    type
ターゲット タイプ。
 - 
    URL
文字列
ターゲット URL。
 
TargetInfoType
ターゲット タイプ。
列挙型
"page" 
 
"background_page" 
 
"worker" 
 
"other" 
 
メソッド
attach()
chrome.debugger.attach(
target: Debuggee,
requiredVersion: string,
callback?: function,
): Promise<void>
指定されたターゲットにデバッガをアタッチします。
パラメータ
- 
    ターゲット
アタッチするデバッグ ターゲット。
 - 
    requiredVersion
文字列
必要なデバッグ プロトコルのバージョン(「0.1」)。デバッガは、メジャー バージョンが一致し、マイナー バージョンがそれ以上であるデバッグ対象にのみアタッチできます。プロトコル バージョンのリストは、こちらで取得できます。
 - 
    callback
関数 省略可
callbackパラメータは次のようになります。() => void
 
戻り値
- 
            
Promise<void>
Chrome 96 以降Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
 
detach()
chrome.debugger.detach(
target: Debuggee,
callback?: function,
): Promise<void>
指定されたターゲットからデバッガを切り離します。
パラメータ
- 
    ターゲット
デバッグ ターゲット。
 - 
    callback
関数 省略可
callbackパラメータは次のようになります。() => void
 
戻り値
- 
            
Promise<void>
Chrome 96 以降Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
 
getTargets()
chrome.debugger.getTargets(
callback?: function,
): Promise<TargetInfo[]>
使用可能なデバッグ ターゲットのリストを返します。
パラメータ
- 
    callback
関数 省略可
callbackパラメータは次のようになります。(result: TargetInfo[]) => void
- 
    件の結果
利用可能なデバッグ ターゲットに対応する TargetInfo オブジェクトの配列。
 
 - 
    
 
戻り値
- 
            
Promise<TargetInfo[]>
Chrome 96 以降Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
 
sendCommand()
chrome.debugger.sendCommand(
target: DebuggerSession,
method: string,
commandParams?: object,
callback?: function,
): Promise<object | undefined>
指定されたコマンドをデバッグ ターゲットに送信します。
パラメータ
- 
    ターゲット
コマンドの送信先となるデバッグ ターゲット。
 - 
    method
文字列
メソッド名。リモート デバッグ プロトコルで定義されているメソッドのいずれかである必要があります。
 - 
    commandParams
オブジェクト 省略可
リクエスト パラメータを含む JSON オブジェクト。このオブジェクトは、指定されたメソッドのリモート デバッグ パラメータ スキーマに準拠している必要があります。
 - 
    callback
関数 省略可
callbackパラメータは次のようになります。(result?: object) => void
- 
    件の結果
オブジェクト 省略可
レスポンスを含む JSON オブジェクト。レスポンスの構造はメソッド名によって異なり、リモート デバッグ プロトコルのコマンドの説明の「returns」属性で定義されます。
 
 - 
    
 
戻り値
- 
            
Promise<object | undefined>
Chrome 96 以降Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
 
イベント
onDetach
chrome.debugger.onDetach.addListener(
callback: function,
)
ブラウザがタブのデバッグ セッションを終了したときに呼び出されます。これは、タブが閉じられるか、接続されたタブに対して Chrome DevTools が呼び出されると発生します。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(source: Debuggee, reason: DetachReason) => void
- 
    source
 - 
    reason
 
 - 
    
 
onEvent
chrome.debugger.onEvent.addListener(
callback: function,
)
デバッグ ターゲットの問題の計測イベントが発生するたびに呼び出されます。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(source: DebuggerSession, method: string, params?: object) => void
- 
    source
 - 
    method
文字列
 - 
    params
オブジェクト 省略可
 
 -