설명
chrome.debugger
API는 Chrome의 원격 디버깅 프로토콜 대체 전송 역할을 합니다. chrome.debugger
를 사용하여 하나 이상의 탭에 연결하여 네트워크 상호작용을 계측하고 JavaScript를 디버그하며 DOM 및 CSS를 변경하는 등의 작업을 수행합니다. Debuggee tabId
를 사용하여 sendCommand로 탭을 타겟팅하고 onEvent 콜백에서 tabId
에 의해 이벤트를 라우팅합니다.
권한
debugger
이 API를 사용하려면 확장 프로그램의 매니페스트에서 "debugger"
권한을 선언해야 합니다.
{
"name": "My extension",
...
"permissions": [
"debugger",
],
...
}
참고
보안상의 이유로 chrome.debugger
API는 모든 Chrome DevTools 프로토콜 도메인에 대한 액세스를 제공하지 않습니다. 사용 가능한 도메인은 다음과 같습니다.Accessibility,
Audits, CacheStorage, Console,
CSS, Debugger, DOM,
DOMDebugger, DOMSnapshotWebAudioWebAuthn
예
이 API를 사용해 보려면 chrome-extension-samples 저장소의 디버거 API 예시를 설치하세요.
유형
Debuggee
디버깅 대상 식별자입니다. tabId, 확장 ID 또는 targetId를 지정해야 합니다.
속성
-
extensionId
문자열 선택사항
디버그하려는 확장 프로그램의 ID입니다. 확장 프로그램 백그라운드 페이지에 연결하는 것은
--silent-debugger-extension-api
명령줄 스위치를 사용하는 경우에만 가능합니다. -
tabId
number 선택사항
디버그하려는 탭의 ID입니다.
-
targetId
문자열 선택사항
디버그 타겟의 불투명 ID입니다.
DebuggerSession
디버거 세션 식별자입니다. tabId, 확장 ID 또는 targetId 중 하나를 지정해야 합니다. 선택사항인 sessionId를 제공할 수도 있습니다. onEvent
에서 전송된 인수에 sessionId가 지정된 경우 이벤트가 루트 디버깅 대상 세션 내의 하위 프로토콜 세션에서 발생한 것임을 의미합니다. sessionId가 sendCommand
에 전달될 때 지정되면 루트 디버깅 대상 세션 내에서 하위 프로토콜 세션을 타겟팅합니다.
속성
-
extensionId
문자열 선택사항
디버그하려는 확장 프로그램의 ID입니다. 확장 프로그램 백그라운드 페이지에 연결하는 것은
--silent-debugger-extension-api
명령줄 스위치를 사용하는 경우에만 가능합니다. -
sessionId
문자열 선택사항
Chrome DevTools 프로토콜 세션의 불투명 ID입니다. tabId, ExtensionId 또는 targetId로 식별되는 루트 세션 내의 하위 세션을 식별합니다.
-
tabId
number 선택사항
디버그하려는 탭의 ID입니다.
-
targetId
문자열 선택사항
디버그 타겟의 불투명 ID입니다.
DetachReason
연결 종료 이유입니다.
enum
TargetInfo
디버그 대상 정보
속성
-
연결됨
boolean
디버거가 이미 연결되어 있으면 true입니다.
-
extensionId
문자열 선택사항
확장 프로그램 ID로, 유형이 'background_page'인 경우에 정의됩니다.
-
faviconUrl
문자열 선택사항
파비콘 URL을 타겟팅합니다.
-
id
문자열
타겟 ID입니다.
-
tabId
number 선택사항
유형 == 'page'인 경우 정의되는 탭 ID입니다.
-
title
문자열
대상 페이지 제목입니다.
-
대상 유형입니다.
-
url
문자열
타겟 URL입니다.
TargetInfoType
대상 유형입니다.
enum
"background_page"
방법
attach()
chrome.debugger.attach(
target: Debuggee,
requiredVersion: string,
callback?: function,
)
디버거를 지정된 타겟에 연결합니다.
매개변수
-
대상
연결할 디버깅 대상입니다.
-
requiredVersion
문자열
필수 디버깅 프로토콜 버전 ('0.1') 일치하는 주 버전과 그 이상의 부 버전이 있는 디버깅 대상에만 연결할 수 있습니다. 프로토콜 버전 목록은 여기에서 확인할 수 있습니다.
-
콜백
함수 선택사항
callback
매개변수는 다음과 같습니다.()=>void
반환 값
-
Promise<void>
Chrome 96 이상프로미스는 Manifest V3 이상에서 지원되지만 콜백은 이전 버전과의 호환성을 위해 제공됩니다. 동일한 함수 호출에 둘 다 사용할 수는 없습니다. 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.
매개변수
-
대상
분리하려는 디버깅 대상입니다.
-
콜백
함수 선택사항
callback
매개변수는 다음과 같습니다.()=>void
반환 값
-
Promise<void>
Chrome 96 이상프로미스는 Manifest V3 이상에서 지원되지만 콜백은 이전 버전과의 호환성을 위해 제공됩니다. 동일한 함수 호출에 둘 다 사용할 수는 없습니다. 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.
getTargets()
chrome.debugger.getTargets(
callback?: function,
)
사용 가능한 디버그 대상 목록을 반환합니다.
매개변수
-
콜백
함수 선택사항
callback
매개변수는 다음과 같습니다.(result: TargetInfo[])=>void
-
결과
사용 가능한 디버그 대상에 해당하는 TargetInfo 객체의 배열입니다.
-
반환 값
-
Promise<TargetInfo[]>
Chrome 96 이상프로미스는 Manifest V3 이상에서 지원되지만 콜백은 이전 버전과의 호환성을 위해 제공됩니다. 동일한 함수 호출에 둘 다 사용할 수는 없습니다. 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.
sendCommand()
chrome.debugger.sendCommand(
target: DebuggerSession,
method: string,
commandParams?: object,
callback?: function,
)
지정된 명령어를 디버깅 대상으로 전송합니다.
매개변수
-
명령어를 전송할 디버깅 대상입니다.
-
method
문자열
메서드 이름입니다. 원격 디버깅 프로토콜에 의해 정의된 메서드 중 하나여야 합니다.
-
commandParams
객체 선택사항
요청 매개변수가 있는 JSON 객체입니다. 이 객체는 지정된 메서드의 원격 디버깅 매개변수 스키마를 준수해야 합니다.
-
콜백
함수 선택사항
callback
매개변수는 다음과 같습니다.(result?: object)=>void
-
결과
객체 선택사항
JSON 객체를 반환합니다. 응답의 구조는 메서드 이름에 따라 다르며 원격 디버깅 프로토콜에서 명령 설명의 'returns' 속성으로 정의됩니다.
-
반환 값
-
Promise<object|undefined>
Chrome 96 이상프로미스는 Manifest V3 이상에서 지원되지만 콜백은 이전 버전과의 호환성을 위해 제공됩니다. 동일한 함수 호출에 둘 다 사용할 수는 없습니다. 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.
이벤트
onDetach
chrome.debugger.onDetach.addListener(
callback: function,
)
브라우저가 탭의 디버깅 세션을 종료하면 실행됩니다. 이는 탭을 닫거나 연결된 탭에 대해 Chrome DevTools를 호출할 때 발생합니다.
매개변수
-
콜백
기능
callback
매개변수는 다음과 같습니다.(source: Debuggee,reason: DetachReason)=>void
-
source
-
reason
-
onEvent
chrome.debugger.onEvent.addListener(
callback: function,
)
디버깅 타겟에서 계측 이벤트를 해결할 때마다 실행됩니다.
매개변수
-
콜백
기능
callback
매개변수는 다음과 같습니다.(source: DebuggerSession,method: string,params?: object)=>void
-
source
-
method
문자열
-
params
객체 선택사항
-