최근 수정 시각 : 2026-06-24 15:47:42

Chrome DevTools Protocol


{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#3f76e2,#3f76e2><colcolor=#fff,#fff> 프로젝트 The Chromium Projects · Chromium · ChromiumOS · Chrome(ChromeOS)
관련 문서 스키마 · 플래그 · Chrome/문제점
기술 V8(Turbofan) · Blink · GN · Chrome DevTools Protocol(Puppeteer) · Cronet · Chrome Trace Event
파생 기술 Node.js · Deno · Electron · Brunch Framework · chromefy
파생 브라우저 ungoogled-chromium
파생 운영체제 ChromeOS Flex · FydeOS · 웨인 OS · 웨일 OS
기타 웹 환경 무결성 · Chrome Dino · 힘내라! 크롬 · Cube Slam }}}}}}}}}

1. 개요2. 구조
2.1. 정의2.2. 레이어
3. 파생 소프트웨어4. 외부 링크5. 관련 문서

1. 개요

Chromium 및 호환 브라우저의 내장 브라우저 개발자 도구를 원격으로 제어 및 JavaScript디버깅하기 위해 사용되는 프로토콜.

Debug Adapter Protocol의 전신이 된 V8 Debugger Protocol과는 별개의 프로토콜이다.

2. 구조

  • target - 디버깅을 할 대상. Debug Adapter Protocol의 debugee와도 비슷하나, 웹 특성상 웹 페이지나 Service Worker, 크롬 확장 프로그램 또한 target에 포함된다.
  • client - CDP로 디버깅을 하는 end client. 쉽게 말해 IDE 등이 해당된다.
  • session - 단일 디버깅 세션
  • handler - 프로토콜 핸들러. V8 layer, content layer를 제외한 블링크 layer 수준 핸들러의 경우 agent라 불리기도 하나 일반적으로는 handler라 부른다.

기반 프로토콜은 웹소켓에 presentation layer는 JSON-RPC 형태이며,음? 기본적으로 세션 내에서 client와 handler가 JSON 이벤트를 주고받는 식으로 진행된다.

2.1. 정의

정의 소스는 전부 PDL이라는 The Chromium Projects 자체 개발 포맷으로 작성되어 있다. 대충 WebIDL 정도의 역할을 떠올리면 좋다.

CDP 정의 소스는 위 두 entry가 전부이며, 역할은 직관적으로 JS 디버깅 기능은 V8 쪽으로, 브라우저 관련 inspect 기능은 browser_protocol 쪽으로 가는 식이다. 위 두 소스를 실제 소비 가능한 포맷으로 빌드해서 chromedevtools/devtools-protocol로 올리고 있기 때문에 이를 참고해도 문제는 없다. 또한 해당 PDL 소스에서 Chromium에 사용할 C++ 파일도 같이 빌드한다.

2.2. 레이어

총 다섯 가지 레이어가 존재한다. 기본적으로 위에서부터 아래대로 핸들링이 발생하는 순서이며, V8이 가장 low level layer이다.
  • Chromium 레이어
  • headless 레이어
  • content 레이어 - 트레이싱 등
  • Blink 레이어
  • V8 레이어 - 기본적으로 JavaScript 디버깅 관련 대부분을 처리한다. 쉽게 생각해 Node.js inspect 시 사용할 수 있는 기능이면 대부분 여기서 처리된다고 보면 된다.

3. 파생 소프트웨어

4. 외부 링크

5. 관련 문서