chrome.debugger

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

debugger

Sicherheitshinweis

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

  • extensionId

    String 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-api verwendet wird.

  • tabId

    number optional

    Die ID des Tabs, den Sie debuggen möchten.

  • targetId

    String optional

    Die intransparente ID des Debugging-Ziels.

DebuggerSession

Chrome 125 und höher

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

  • extensionId

    String 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-api verwendet wird.

  • sessionId

    String 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.

  • tabId

    number optional

    Die ID des Tabs, den Sie debuggen möchten.

  • targetId

    String optional

    Die intransparente ID des Debugging-Ziels.

DetachReason

Chrome 44 und höher

Grund für die Beendigung der Verbindung.

Enum

"target_closed"

"canceled_by_user"

TargetInfo

Informationen zum Debugging-Ziel

Attribute

  • Hinzugefügt

    boolean

    „True“, wenn der Debugger bereits angehängt ist.

  • extensionId

    String optional

    Die Erweiterungs-ID, die definiert wird, wenn type = 'background_page'.

  • faviconUrl

    String optional

    Ziel-Favicon-URL.

  • id

    String

    Ziel-ID.

  • tabId

    number optional

    Die Tab-ID, definiert, wenn type == 'page'.

  • Titel

    String

    Titel der Zielseite.

  • Zieltyp.

  • URL

    String

    Ziel-URL.

TargetInfoType

Chrome 44 und höher

Zieltyp.

Enum

"page"

"background_page"

"worker"

"other"

Methoden

attach()

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

Hängt den Debugger an das angegebene Ziel an.

Parameter

  • Ziel

    Das Debugging-Ziel, an das Sie anhängen möchten.

  • requiredVersion

    String

    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.

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    () => void

Ausgabe

  • Promise<void>

    Chrome 96 und höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

detach()

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

Trennt den Debugger vom angegebenen Ziel.

Parameter

  • Ziel

    Das Debugging-Ziel, von dem Sie die Verbindung trennen möchten.

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    () => void

Ausgabe

  • Promise<void>

    Chrome 96 und höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

getTargets()

Promise
chrome.debugger.getTargets(
  callback?: function,
)
: Promise<TargetInfo[]>

Gibt die Liste der verfügbaren Debugging-Ziele zurück.

Parameter

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    (result: TargetInfo[]) => void

    • Ergebnis

      Array von TargetInfo-Objekten, die den verfügbaren Debugging-Zielen entsprechen.

Ausgabe

  • Promise<TargetInfo[]>

    Chrome 96 und höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

sendCommand()

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

Sendet den angegebenen Befehl an das Debugging-Ziel.

Parameter

  • Das Debugging-Ziel, an das Sie den Befehl senden möchten.

  • method

    String

    Methodenname. Muss eine der Methoden sein, die durch das Remotedebugging-Protokoll definiert werden.

  • commandParams

    object optional

    JSON-Objekt mit Anfrageparametern. Dieses Objekt muss dem Schema für Remote-Debugging-Parameter für die angegebene Methode entsprechen.

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    (result?: object) => void

    • Ergebnis

      object 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öher

    Promises 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

onEvent

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

Wird immer ausgelöst, wenn ein Instrumentierungsereignis für das Debugging von Zielproblemen auftritt.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

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