Beschreibung
Die chrome.debugger API dient als alternativer Transport für das Remote-Debugging-Protokoll von Chrome. Mit chrome.debugger können Sie eine oder mehrere Tabs anhängen, um Netzwerkinteraktionen zu analysieren, JavaScript zu debuggen, das DOM und CSS zu ändern und vieles mehr. Verwenden Sie das Attribut Debuggee tabId, um Tabs mit sendCommand auszurichten und Ereignisse über tabId aus onEvent-Callbacks weiterzuleiten.
Berechtigungen
debuggerSicherheitshinweis
Aus Sicherheitsgründen bietet die chrome.debugger API keinen Zugriff auf alle Chrome DevTools Protocol-Domains. Die verfügbaren Domains sind: 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 und WebAuthn.
Manifest
Sie müssen die Berechtigung "debugger"` im Manifest Ihrer Erweiterung deklarieren, um diese API verwenden zu können.
{
  "name": "My extension",
  ...
  "permissions": [
    "debugger",
  ],
  ...
}
Beispiele
Wenn Sie diese API testen möchten, installieren Sie das Debugger API-Beispiel aus dem Repository chrome-extension-samples.
Typen
Debuggee
Kennung der zu debuggenden Komponente. Es muss entweder „tabId“, „extensionId“ oder „targetId“ angegeben werden.
Attribute
- 
    extensionIdString optional Die ID der Erweiterung, die Sie debuggen möchten. Das Anhängen an eine Erweiterungs-Hintergrundseite ist nur möglich, wenn der Befehlszeilenschalter --silent-debugger-extension-apiverwendet wird.
- 
    tabIdnumber optional Die ID des Tabs, den Sie debuggen möchten. 
- 
    targetIdString optional Die intransparente ID des Debugging-Ziels. 
DebuggerSession
Debugger-Sitzungs-ID. Es muss entweder „tabId“, „extensionId“ oder „targetId“ angegeben werden. Außerdem kann optional eine sessionId angegeben werden. Wenn „sessionId“ für Argumente angegeben wird, die von onEvent gesendet werden, bedeutet das, dass das Ereignis aus einer untergeordneten Protokollsitzung innerhalb der Debuggee-Stammsitzung stammt. Wenn „sessionId“ angegeben wird, wenn es an sendCommand übergeben wird, wird eine untergeordnete Protokollsitzung innerhalb der Debuggee-Stammsitzung angesprochen.
Attribute
- 
    extensionIdString optional Die ID der Erweiterung, die Sie debuggen möchten. Das Anhängen an eine Erweiterungs-Hintergrundseite ist nur möglich, wenn der Befehlszeilenschalter --silent-debugger-extension-apiverwendet wird.
- 
    sessionIdString optional Die verschlüsselte ID der Chrome-Entwicklertools-Protokollsitzung. Gibt eine untergeordnete Sitzung innerhalb der Stammsitzung an, die durch tabId, extensionId oder targetId identifiziert wird. 
- 
    tabIdnumber optional Die ID des Tabs, den Sie debuggen möchten. 
- 
    targetIdString optional Die intransparente ID des Debugging-Ziels. 
DetachReason
Grund für die Beendigung der Verbindung.
Enum
"target_closed" 
 
"canceled_by_user" 
 
TargetInfo
Informationen zum Debugging-Ziel
Attribute
- 
    Hinzugefügtboolean „True“, wenn der Debugger bereits angehängt ist. 
- 
    extensionIdString optional Die Erweiterungs-ID, die definiert wird, wenn type = 'background_page'. 
- 
    faviconUrlString optional Ziel-Favicon-URL. 
- 
    idString Ziel-ID. 
- 
    tabIdnumber optional Die Tab-ID, definiert, wenn type == 'page'. 
- 
    TitelString Titel der Zielseite. 
- 
    TypZieltyp. 
- 
    URLString Ziel-URL. 
TargetInfoType
Zieltyp.
Enum
"page" 
 
"background_page" 
 
"worker" 
 
"other" 
 
Methoden
attach()
chrome.debugger.attach(
target: Debuggee,
requiredVersion: string,
callback?: function,
): Promise<void>
Hängt den Debugger an das angegebene Ziel an.
Parameter
- 
    ZielDas Debugging-Ziel, an das Sie anhängen möchten. 
- 
    requiredVersionString Erforderliche Debugging-Protokollversion („0.1“). Die Hauptversion muss übereinstimmen und die Nebenversion muss größer oder gleich sein. Eine Liste der Protokollversionen finden Sie hier. 
- 
    callbackFunktion optional Der Parameter callbacksieht so aus:() => void 
Ausgabe
- 
            Promise<void> Chrome 96 und höherPromises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden. 
detach()
chrome.debugger.detach(
target: Debuggee,
callback?: function,
): Promise<void>
Trennt den Debugger vom angegebenen Ziel.
Parameter
- 
    ZielDas Debugging-Ziel, von dem Sie die Verbindung trennen möchten. 
- 
    callbackFunktion optional Der Parameter callbacksieht so aus:() => void 
Ausgabe
- 
            Promise<void> Chrome 96 und höherPromises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden. 
getTargets()
chrome.debugger.getTargets(
callback?: function,
): Promise<TargetInfo[]>
Gibt die Liste der verfügbaren Debugging-Ziele zurück.
Parameter
- 
    callbackFunktion optional Der Parameter callbacksieht so aus:(result: TargetInfo[]) => void - 
    ErgebnisArray von TargetInfo-Objekten, die den verfügbaren Debugging-Zielen entsprechen. 
 
- 
    
Ausgabe
- 
            Promise<TargetInfo[]> Chrome 96 und höherPromises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden. 
sendCommand()
chrome.debugger.sendCommand(
target: DebuggerSession,
method: string,
commandParams?: object,
callback?: function,
): Promise<object | undefined>
Sendet den angegebenen Befehl an das Debugging-Ziel.
Parameter
- 
    ZielDas Debugging-Ziel, an das Sie den Befehl senden möchten. 
- 
    methodString Methodenname. Muss eine der Methoden sein, die durch das Remotedebugging-Protokoll definiert werden. 
- 
    commandParamsobject optional JSON-Objekt mit Anfrageparametern. Dieses Objekt muss dem Schema für Remote-Debugging-Parameter für die angegebene Methode entsprechen. 
- 
    callbackFunktion optional Der Parameter callbacksieht so aus:(result?: object) => void - 
    Ergebnisobject optional JSON-Objekt mit der Antwort. Die Struktur der Antwort variiert je nach Methodenname und wird durch das Attribut „returns“ der Befehlsbeschreibung im Protokoll für das Remote-Debugging definiert. 
 
- 
    
Ausgabe
- 
            Promise<object | undefined> Chrome 96 und höherPromises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden. 
Ereignisse
onDetach
chrome.debugger.onDetach.addListener(
callback: function,
)
Wird ausgelöst, wenn der Browser die Debugging-Sitzung für den Tab beendet. Dies geschieht, wenn der Tab geschlossen wird oder Chrome-Entwicklertools für den angehängten Tab aufgerufen werden.
Parameter
- 
    callbackFunktion Der Parameter callbacksieht so aus:(source: Debuggee, reason: DetachReason) => void - 
    source
- 
    reason
 
- 
    
onEvent
chrome.debugger.onEvent.addListener(
callback: function,
)
Wird immer ausgelöst, wenn ein Instrumentierungsereignis für das Debugging von Zielproblemen auftritt.
Parameter
- 
    callbackFunktion Der Parameter callbacksieht so aus:(source: DebuggerSession, method: string, params?: object) => void - 
    source
- 
    methodString 
- 
    paramsobject optional 
 
-