chrome.debugger

Descrição

A API chrome.debugger serve como um transporte alternativo para o protocolo de depuração remota do Chrome. Use chrome.debugger para anexar a uma ou mais guias e instrumentar a interação de rede, depurar JavaScript, mudar o DOM e o CSS e muito mais. Use a propriedade Debuggee tabId para segmentar guias com sendCommand e rotear eventos por tabId de callbacks onEvent.

Permissões

debugger

Observação de segurança

Por motivos de segurança, a API chrome.debugger não oferece acesso a todos os domínios do protocolo do Chrome DevTools. Os domínios disponíveis são: Acessibilidade, Auditorias, CacheStorage, Console, CSS, Database, Debugger, DOM, DOMDebugger, DOMSnapshot, Emulation, Fetch, IO, Input, Inspector, Log, Network, Overlay, Page, Performance, Profiler, Runtime, Storage, Target, Tracing, WebAudio e WebAuthn.

Manifesto

Você precisa declarar a permissão "debugger" no manifesto da extensão para usar essa API.

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

Exemplos

Para testar essa API, instale o exemplo da API de depurador do repositório chrome-extension-samples (link em inglês).

Tipos

Debuggee

Identificador do depurado. É preciso especificar tabId, extensionId ou targetId

Propriedades

  • extensionId

    string opcional

    O ID da extensão que você quer depurar. Só é possível anexar a uma página em segundo plano de extensão quando a opção de linha de comando --silent-debugger-extension-api é usada.

  • tabId

    number optional

    O ID da guia que você quer depurar.

  • targetId

    string opcional

    O ID opaco do destino de depuração.

DebuggerSession

Chrome 125 ou mais recente

Identificador da sessão do depurador. É preciso especificar um dos seguintes campos: tabId, extensionId ou targetId. Além disso, um sessionId opcional pode ser fornecido. Se "sessionId" for especificado para argumentos enviados de onEvent, isso significa que o evento está vindo de uma sessão de protocolo secundária dentro da sessão raiz do depurador. Se "sessionId" for especificado ao ser transmitido para sendCommand, ele vai segmentar uma sessão de protocolo secundária na sessão raiz do depurador.

Propriedades

  • extensionId

    string opcional

    O ID da extensão que você quer depurar. Só é possível anexar a uma página em segundo plano de extensão quando a opção de linha de comando --silent-debugger-extension-api é usada.

  • sessionId

    string opcional

    O ID opaco da sessão do Chrome DevTools Protocol. Identifica uma sessão secundária na sessão raiz identificada por tabId, extensionId ou targetId.

  • tabId

    number optional

    O ID da guia que você quer depurar.

  • targetId

    string opcional

    O ID opaco do destino de depuração.

DetachReason

Chrome 44 ou mais recente

Motivo do término da conexão.

Enumeração

"target_closed"

"canceled_by_user"

TargetInfo

Informações de destino de depuração

Propriedades

  • sempre que o disco for anexado

    booleano

    Verdadeiro se o depurador já estiver anexado.

  • extensionId

    string opcional

    O ID da extensão, definido se type = "background_page".

  • faviconUrl

    string opcional

    URL do favicon de destino.

  • ID

    string

    ID de destino.

  • tabId

    number optional

    O ID da guia, definido se type == "page".

  • título

    string

    Título da página de destino.

  • Tipo de destino.

  • url

    string

    URL de destino.

TargetInfoType

Chrome 44 ou mais recente

Tipo de destino.

Enumeração

"page"

"background_page"

"worker"

"other"

Métodos

attach()

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

Anexa o depurador ao destino especificado.

Parâmetros

  • target

    Destino de depuração a que você quer anexar.

  • requiredVersion

    string

    Versão necessária do protocolo de depuração ("0.1"). Só é possível anexar ao debuggee com a mesma versão principal e uma versão secundária maior ou igual. A lista de versões do protocolo pode ser acessada aqui.

  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    () => void

Retorna

  • Promise<void>

    Chrome 96+

    As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.

detach()

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

Desvincula o depurador do destino especificado.

Parâmetros

  • target

    Alvo de depuração que você quer remover.

  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    () => void

Retorna

  • Promise<void>

    Chrome 96+

    As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.

getTargets()

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

Retorna a lista de destinos de depuração disponíveis.

Parâmetros

  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    (result: TargetInfo[]) => void

    • resultado

      Matriz de objetos TargetInfo correspondentes aos destinos de depuração disponíveis.

Retorna

  • Promise<TargetInfo[]>

    Chrome 96+

    As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.

sendCommand()

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

Envia o comando especificado para o destino de depuração.

Parâmetros

  • Destino de depuração para o qual você quer enviar o comando.

  • method

    string

    Nome do método. Precisa ser um dos métodos definidos pelo protocolo de depuração remota.

  • commandParams

    objeto opcional

    Objeto JSON com parâmetros de solicitação. Esse objeto precisa estar em conformidade com o esquema de parâmetros de depuração remota do método especificado.

  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    (result?: object) => void

    • resultado

      objeto opcional

      Objeto JSON com a resposta. A estrutura da resposta varia dependendo do nome do método e é definida pelo atributo "returns" da descrição do comando no protocolo de depuração remota.

Retorna

  • Promise<object | undefined>

    Chrome 96+

    As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.

Eventos

onDetach

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

Disparado quando o navegador encerra a sessão de depuração da guia. Isso acontece quando a guia está sendo fechada ou quando o Chrome DevTools está sendo invocado para a guia anexada.

Parâmetros

onEvent

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

Disparado sempre que o evento de instrumentação de problemas de destino de depuração.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

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