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
debuggerObservaçã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
callbacktem 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
callbacktem 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
callbacktem 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
callbacktem 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
callbacktem 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
callbacktem esta aparência:(source: DebuggerSession, method: string, params?: object) => void
-
source
-
method
string
-
params
objeto opcional
-