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
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
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
Tipo de destino.
-
url
string
URL de destino.
TargetInfoType
Tipo de destino.
Enumeração
"page"
"background_page"
"worker"
"other"
Métodos
attach()
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()
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()
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()
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
-
target
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
-
callback
função
O parâmetro
callback
tem esta aparência:(source: Debuggee, reason: DetachReason) => void
-
source
-
reason
-
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
-
source
-
method
string
-
params
objeto opcional
-