chrome.debugger

설명

chrome.debugger API는 Chrome의 원격 디버깅 프로토콜의 대체 전송으로 사용됩니다. chrome.debugger를 사용하여 하나 이상의 탭에 연결하여 네트워크 상호작용을 계측하고, JavaScript를 디버그하고, DOM 및 CSS를 변경하는 등의 작업을 할 수 있습니다. Debuggee 속성 tabId을 사용하여 sendCommand로 탭을 타겟팅하고 onEvent 콜백에서 tabId로 이벤트를 라우팅합니다.

권한

debugger

보안 참고사항

보안상의 이유로 chrome.debugger API는 모든 Chrome DevTools 프로토콜 도메인에 대한 액세스를 제공하지 않습니다. 사용 가능한 도메인은 접근성, 감사, CacheStorage, 콘솔, CSS, 데이터베이스, Debugger, DOM, DOMDebugger, DOMSnapshot, 에뮬레이션, Fetch, IO, 입력, 인스펙터, 로그, 네트워크, 오버레이, 페이지, 성능, 프로파일러, 런타임, 스토리지, 타겟, 추적, WebAudio, WebAuthn입니다.

매니페스트

이 API를 사용하려면 확장 프로그램의 매니페스트에서 "debugger" 권한을 선언해야 합니다.

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

이 API를 사용해 보려면 chrome-extension-samples 저장소에서 디버거 API 예시를 설치하세요.

유형

Debuggee

디버깅 대상 식별자입니다. tabId, extensionId 또는 targetId 중 하나를 지정해야 합니다.

속성

  • extensionId

    문자열 선택사항

    디버그하려는 확장 프로그램의 ID입니다. 확장 프로그램 백그라운드 페이지에 연결하는 것은 --silent-debugger-extension-api 명령줄 스위치를 사용하는 경우에만 가능합니다.

  • tabId

    번호 선택사항

    디버깅하려는 탭의 ID입니다.

  • targetId

    문자열 선택사항

    디버그 타겟의 불투명 ID입니다.

DebuggerSession

Chrome 125 이상

디버거 세션 식별자입니다. tabId, extensionId 또는 targetId 중 하나를 지정해야 합니다. 선택사항인 sessionId를 제공할 수도 있습니다. onEvent에서 전송된 인수에 sessionId가 지정된 경우 이벤트가 루트 디버기 세션 내의 하위 프로토콜 세션에서 발생한 것입니다. sendCommand에 전달될 때 sessionId가 지정되면 루트 디버기 세션 내의 하위 프로토콜 세션을 타겟팅합니다.

속성

  • extensionId

    문자열 선택사항

    디버그하려는 확장 프로그램의 ID입니다. 확장 프로그램 백그라운드 페이지에 연결하는 것은 --silent-debugger-extension-api 명령줄 스위치를 사용하는 경우에만 가능합니다.

  • sessionId

    문자열 선택사항

    Chrome DevTools 프로토콜 세션의 불투명 ID입니다. tabId, extensionId 또는 targetId로 식별되는 루트 세션 내의 하위 세션을 식별합니다.

  • tabId

    번호 선택사항

    디버깅하려는 탭의 ID입니다.

  • targetId

    문자열 선택사항

    디버그 타겟의 불투명 ID입니다.

DetachReason

Chrome 44 이상

연결 종료 이유입니다.

열거형

"target_closed"

"canceled_by_user"

TargetInfo

디버그 타겟 정보

속성

  • attached

    부울

    디버거가 이미 연결된 경우 True입니다.

  • extensionId

    문자열 선택사항

    유형이 'background_page'인 경우 정의되는 확장 프로그램 ID입니다.

  • faviconUrl

    문자열 선택사항

    타겟 파비콘 URL입니다.

  • id

    문자열

    타겟 ID입니다.

  • tabId

    번호 선택사항

    유형이 'page'인 경우 정의된 탭 ID입니다.

  • 제목

    문자열

    타겟 페이지 제목입니다.

  • 타겟 유형입니다.

  • URL

    문자열

    타겟 URL입니다.

TargetInfoType

Chrome 44 이상

타겟 유형입니다.

열거형

'page'

'background_page'

'worker'

'other'

메서드

attach()

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

지정된 타겟에 디버거를 연결합니다.

매개변수

  • target

    연결하려는 디버깅 타겟입니다.

  • requiredVersion

    문자열

    필수 디버깅 프로토콜 버전 ('0.1')입니다. 주 버전이 일치하고 부 버전이 크거나 같은 디버기만 연결할 수 있습니다. 프로토콜 버전 목록은 여기에서 확인할 수 있습니다.

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    () => void

반환 값

  • Promise<void>

    Chrome 96 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

detach()

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

지정된 타겟에서 디버거를 분리합니다.

매개변수

  • target

    분리할 디버깅 타겟입니다.

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    () => void

반환 값

  • Promise<void>

    Chrome 96 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

getTargets()

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

사용 가능한 디버그 타겟 목록을 반환합니다.

매개변수

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (result: TargetInfo[]) => void

    • 결과

      사용 가능한 디버그 타겟에 해당하는 TargetInfo 객체의 배열입니다.

반환 값

  • Promise<TargetInfo[]>

    Chrome 96 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

sendCommand()

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

주어진 명령어를 디버깅 타겟에 전송합니다.

매개변수

  • 명령어를 전송할 디버깅 타겟입니다.

  • method

    문자열

    메서드 이름입니다. 원격 디버깅 프로토콜에 의해 정의된 메서드 중 하나여야 합니다.

  • commandParams

    객체 선택사항

    요청 매개변수가 포함된 JSON 객체입니다. 이 객체는 지정된 메서드의 원격 디버깅 매개변수 스키마를 준수해야 합니다.

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (result?: object) => void

    • 결과

      객체 선택사항

      응답이 포함된 JSON 객체입니다. 응답 구조는 메서드 이름에 따라 다르며 원격 디버깅 프로토콜의 명령어 설명에 있는 'returns' 속성으로 정의됩니다.

반환 값

  • Promise<object | undefined>

    Chrome 96 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

이벤트

onDetach

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

브라우저가 탭의 디버깅 세션을 종료할 때 발생합니다. 이 문제는 탭이 닫히거나 연결된 탭에 Chrome DevTools가 호출될 때 발생합니다.

매개변수

onEvent

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

디버깅 타겟 문제 계측 이벤트가 발생할 때마다 발생합니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

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