chrome.debugger

Descrizione

L'API chrome.debugger funge da trasporto alternativo per il protocollo di debug remoto di Chrome. Utilizza chrome.debugger per collegarti a una o più schede per instrumentare l'interazione di rete, eseguire il debug di JavaScript, modificare il DOM e CSS e altro ancora. Utilizza la proprietà Debuggee tabId per scegliere come target le schede con sendCommand e indirizzare gli eventi in base a tabId dai callback onEvent.

Autorizzazioni

debugger

Nota sulla sicurezza

Per motivi di sicurezza, l'API chrome.debugger non fornisce l'accesso a tutti i domini del protocollo Chrome DevTools. I domini disponibili sono: Accessibilità, Audit, CacheStorage, Console, CSS, Database, Debugger, DOM, DOMDebugger, DOMSnapshot, Emulazione, Recupero, I/O, Input, Inspector, Log, Network, Overlay, Pagina, Rendimento, Profiler, Runtime, Storage, Target, Tracing, WebAudio e WebAuthn.

Manifest

Per utilizzare questa API, devi dichiarare l'autorizzazione "debugger" nel manifest dell'estensione.

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

Esempi

Per provare questa API, installa l'esempio di API di debug dal repository chrome-extension-samples.

Tipi

Debuggee

Identificatore del debuggee. È necessario specificare tabId, extensionId o targetId

Proprietà

  • extensionId

    stringa facoltativa

    L'ID dell'estensione che intendi eseguire il debug. L'associazione a una pagina di sfondo dell'estensione è possibile solo quando viene utilizzato l'opzione a riga di comando --silent-debugger-extension-api.

  • tabId

    number (facoltativo)

    L'ID della scheda che intendi eseguire il debug.

  • targetId

    stringa facoltativa

    L'ID opaco della destinazione di debug.

DebuggerSession

Chrome 125+

Identificatore della sessione del debugger. È necessario specificare tabId, extensionId o targetId. Inoltre, è possibile fornire un sessionId facoltativo. Se sessionId è specificato per gli argomenti inviati da onEvent, significa che l'evento proviene da una sessione del protocollo secondario all'interno della sessione di debuggee principale. Se sessionId viene specificato quando viene passato a sendCommand, ha come target una sessione del protocollo secondario all'interno della sessione di debuggee radice.

Proprietà

  • extensionId

    stringa facoltativa

    L'ID dell'estensione che intendi eseguire il debug. L'associazione a una pagina di sfondo dell'estensione è possibile solo quando viene utilizzato l'opzione a riga di comando --silent-debugger-extension-api.

  • sessionId

    stringa facoltativa

    L'ID opaco della sessione Chrome DevTools Protocol. Identifica una sessione secondaria all'interno della sessione principale identificata da tabId, extensionId o targetId.

  • tabId

    number (facoltativo)

    L'ID della scheda che intendi eseguire il debug.

  • targetId

    stringa facoltativa

    L'ID opaco della destinazione di debug.

DetachReason

Chrome 44+

Motivo della chiusura della connessione.

Enum

"target_closed"

"canceled_by_user"

TargetInfo

Informazioni sul target di debug

Proprietà

  • collegato

    booleano

    True se il debugger è già collegato.

  • extensionId

    stringa facoltativa

    L'ID estensione, definito se type = "background_page".

  • faviconUrl

    stringa facoltativa

    URL della favicon di destinazione.

  • id

    stringa

    ID target.

  • tabId

    number (facoltativo)

    L'ID scheda, definito se type == 'page'.

  • titolo

    stringa

    Titolo della pagina target.

  • Tipo di target.

  • url

    stringa

    URL di destinazione.

TargetInfoType

Chrome 44+

Tipo di target.

Enum

"page"

"background_page"

"worker"

"other"

Metodi

attach()

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

Collega il debugger al target specificato.

Parametri

  • target

    Target di debug a cui vuoi collegarti.

  • requiredVersion

    stringa

    Versione del protocollo di debug richiesta ("0.1"). È possibile collegarsi al debuggee solo con una versione principale corrispondente e una versione secondaria maggiore o uguale. L'elenco delle versioni del protocollo è disponibile qui.

  • callback

    funzione facoltativa

    Il parametro callback ha il seguente aspetto:

    () => void

Resi

  • Promise<void>

    Chrome 96+

    Le promesse sono supportate solo per Manifest V3 e versioni successive, le altre piattaforme devono utilizzare i callback.

detach()

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

Scollega il debugger dalla destinazione specificata.

Parametri

  • target

    Target di debug da cui vuoi scollegarti.

  • callback

    funzione facoltativa

    Il parametro callback ha il seguente aspetto:

    () => void

Resi

  • Promise<void>

    Chrome 96+

    Le promesse sono supportate solo per Manifest V3 e versioni successive, le altre piattaforme devono utilizzare i callback.

getTargets()

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

Restituisce l'elenco delle destinazioni di debug disponibili.

Parametri

  • callback

    funzione facoltativa

    Il parametro callback ha il seguente aspetto:

    (result: TargetInfo[]) => void

    • risultato

      Array di oggetti TargetInfo corrispondenti alle destinazioni di debug disponibili.

Resi

  • Promise<TargetInfo[]>

    Chrome 96+

    Le promesse sono supportate solo per Manifest V3 e versioni successive, le altre piattaforme devono utilizzare i callback.

sendCommand()

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

Invia il comando specificato al target di debug.

Parametri

  • Destinazione di debug a cui vuoi inviare il comando.

  • method

    stringa

    Nome del metodo. Deve essere uno dei metodi definiti dal protocollo di debug remoto.

  • commandParams

    oggetto facoltativo

    Oggetto JSON con i parametri della richiesta. Questo oggetto deve essere conforme allo schema dei parametri di debug remoto per il metodo specificato.

  • callback

    funzione facoltativa

    Il parametro callback ha il seguente aspetto:

    (result?: object) => void

    • risultato

      oggetto facoltativo

      Oggetto JSON con la risposta. La struttura della risposta varia a seconda del nome del metodo ed è definita dall'attributo "returns" della descrizione del comando nel protocollo di debug remoto.

Resi

  • Promise<object | undefined>

    Chrome 96+

    Le promesse sono supportate solo per Manifest V3 e versioni successive, le altre piattaforme devono utilizzare i callback.

Eventi

onDetach

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

Attivato quando il browser termina la sessione di debug per la scheda. Ciò si verifica quando la scheda viene chiusa o quando vengono richiamati gli strumenti di sviluppo di Chrome per la scheda collegata.

Parametri

onEvent

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

Attivato ogni volta che viene generato l'evento di strumentazione dei problemi relativi alla destinazione di debug.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

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