chrome.debugger

refresh date: 2026-09-25 robots: noindex

Beschreibung

Die chrome.debugger API dient als alternativer Transport für das Remote-Debugging-Protokoll von Chrome. Mit chrome.debugger können Sie einen oder mehrere Tabs anhängen, um die Netzwerkinteraktion zu instrumentieren, JavaScript zu debuggen, das DOM und CSS zu mutieren und vieles mehr. Verwenden Sie das Debuggee-Attribut tabId, um Tabs mit sendCommand anzusprechen und Ereignisse nach tabId aus onEvent-Callbacks weiterzuleiten.

Berechtigungen

debugger

Sicherheitshinweis

Aus Sicherheitsgründen bietet die chrome.debugger API keinen Zugriff auf alle Chrome-Entwicklertools-Protokoll-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, 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 ausprobieren möchten, installieren Sie das Debugger API-Beispiel aus dem Repository chrome-extension-samples.

Typen

Debuggee

Debuggee-ID. 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 Hintergrundseite einer Erweiterung 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 Debug-Ziels.

DebuggerSession

Chrome 125 oder höher

Debugger-Sitzungs-ID. Es muss entweder „tabId“, „extensionId“ oder „targetId“ angegeben werden. Zusätzlich kann eine optionale sessionId angegeben werden. Wenn „sessionId“ für Argumente angegeben ist, die von onEvent gesendet werden, bedeutet das, dass das Ereignis von einer untergeordneten Protokollsitzung innerhalb der Stamm-Debuggee-Sitzung stammt. Wenn „sessionId“ bei der Übergabe an sendCommand angegeben wird, wird eine untergeordnete Protokollsitzung innerhalb der Stamm-Debuggee-Sitzung als Ziel verwendet.

Attribute

  • extensionId

    String optional

    Die ID der Erweiterung, die Sie debuggen möchten. Das Anhängen an eine Hintergrundseite einer Erweiterung ist nur möglich, wenn der Befehlszeilenschalter --silent-debugger-extension-api verwendet wird.

  • sessionId

    String optional

    Die opake ID der Chrome-Entwicklertools-Protokoll-Sitzung. Identifiziert eine untergeordnete Sitzung innerhalb der Stammsitzung, 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 Debug-Ziels.

DetachReason

Chrome 44 oder höher

Grund für die Beendigung der Verbindung.

Enum

"target_closed"

"canceled_by_user"

TargetInfo

Informationen zum Debug-Ziel

Attribute

  • Hinzugefügt

    boolean

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

  • extensionId

    String optional

    Die Erweiterungs-ID, die definiert ist, 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

    Seitentitel der Zielseite.

  • Zieltyp.

  • URL

    String

    Ziel-URL.

TargetInfoType

Chrome 44 oder 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

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

  • requiredVersion

    String

    Erforderliche Version des Debugging-Protokolls („0.1“). Sie können nur eine Verbindung zum Debuggee mit der übereinstimmenden Hauptversion und einer höheren oder gleichen Nebenversion herstellen. Eine Liste der Protokollversionen finden Sie hier.

  • callback

    function optional

    Der Parameter callback sieht so aus:

    () => void

Ausgabe

  • Promise<void>

    Chrome 96 oder höher

    Wird aufgelöst, sobald der Anhängevorgang erfolgreich ist oder fehlschlägt. Das Promise wird ohne Wert aufgelöst. Wenn das Anhängen fehlschlägt, wird das Promise abgelehnt.

    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

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

  • callback

    function optional

    Der Parameter callback sieht so aus:

    () => void

Ausgabe

  • Promise<void>

    Chrome 96 oder höher

    Wird aufgelöst, sobald der Trennvorgang erfolgreich ist oder fehlschlägt. Das Promise wird ohne Wert aufgelöst. Wenn das Trennen fehlschlägt, wird das Promise abgelehnt.

    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

    function optional

    Der Parameter callback sieht so aus:

    (result: TargetInfo[]) => void

    • Ergebnis

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

Ausgabe

  • Promise<TargetInfo[]>

    Chrome 96 oder 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

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

  • method

    String

    Methodenname. Sollte eine der Methoden sein, die im Remote-Debugging-Protokoll definiert sind.

  • commandParams

    Objekt optional

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

  • callback

    function optional

    Der Parameter callback sieht so aus:

    (result?: object) => void

    • Ergebnis

      Objekt optional

      JSON-Objekt mit der Antwort. Die Struktur der Antwort variiert je nach Methodenname und wird durch das Attribut „returns“ der Befehlsbeschreibung im Remote-Debugging-Protokoll definiert.

Ausgabe

  • Promise<object | undefined>

    Chrome 96 oder höher

    Antworttext. Wenn beim Posten der Nachricht ein Fehler auftritt, wird das Promise abgelehnt.

    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 Fehlerbehebungssitzung für den Tab beendet. Das passiert, wenn entweder der Tab geschlossen oder die Chrome-Entwicklertools für den angehängten Tab aufgerufen werden.

Parameter

onEvent

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

Wird ausgelöst, wenn das Debugging-Ziel ein Instrumentierungsereignis ausgibt.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

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