chrome.debugger

설명

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

Chrome 44 이상

연결 종료 이유입니다.

enum

TargetInfo

디버그 대상 정보

속성

  • 연결됨

    boolean

    디버거가 이미 연결되어 있으면 true입니다.

  • extensionId

    문자열 선택사항

    확장 프로그램 ID로, 유형이 'background_page'인 경우에 정의됩니다.

  • faviconUrl

    문자열 선택사항

    파비콘 URL을 타겟팅합니다.

  • id

    문자열

    타겟 ID입니다.

  • tabId

    number 선택사항

    유형 == 'page'인 경우 정의되는 탭 ID입니다.

  • title

    문자열

    대상 페이지 제목입니다.

  • 대상 유형입니다.

  • url

    문자열

    타겟 URL입니다.

TargetInfoType

Chrome 44 이상

대상 유형입니다.

enum

"background_page"

방법

attach()

프로미스
chrome.debugger.attach(
  target: Debuggee,
  requiredVersion: string,
  callback?: function,
)

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

매개변수

  • 연결할 디버깅 대상입니다.

  • requiredVersion

    문자열

    필수 디버깅 프로토콜 버전 ('0.1') 일치하는 주 버전과 그 이상의 부 버전이 있는 디버깅 대상에만 연결할 수 있습니다. 프로토콜 버전 목록은 여기에서 확인할 수 있습니다.

  • 콜백

    함수 선택사항

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

    ()=>void

반환 값

  • Promise<void>

    Chrome 96 이상

    프로미스는 Manifest V3 이상에서 지원되지만 콜백은 이전 버전과의 호환성을 위해 제공됩니다. 동일한 함수 호출에 둘 다 사용할 수는 없습니다. 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.

detach()

프로미스
chrome.debugger.detach(
  target: Debuggee,
  callback?: function,
)

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

매개변수

  • 분리하려는 디버깅 대상입니다.

  • 콜백

    함수 선택사항

    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를 호출할 때 발생합니다.

매개변수

onEvent

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

디버깅 타겟에서 계측 이벤트를 해결할 때마다 실행됩니다.

매개변수

  • 콜백

    기능

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

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