- 2,000명 이상의 개발자가 요청한 디버깅 기능이 마침내 Zed에 구현됨
- 속도, 익숙함, 구성 가능성을 중심으로 디버거가 설계됨
- Rust, C/C++, JavaScript, Go, Python 등 인기 언어와 Debug Adapter Protocol (DAP) 기반 확장 지원이 제공됨
- 직관적인 LOCATORS 시스템으로 별도의 설정 없이 대부분의 프로젝트에서 간편하게 디버깅 가능함
- UI와 데이터 레이어의 분리된 아키텍처로 협업 디버깅 및 확장성에 뛰어난 기반이 마련됨
Zed 디버거 출시
- 2,000명 이상의 개발자들의 요청에 따라 Zed 에디터에 공식적인 디버깅 기능이 도입됨. 이는 Zed 1.0으로 나아가기 위한 매우 중요한 진전
주요 목표
- 속도: 빠른 환경 전환과 효율적인 디버깅 경험 제공
- 익숙함: Zed의 디자인 언어와 조화를 이루며, 전형적인 디버거 흐름에 기대되는 모든 기능 지원
- 구성 가능성: UI, 키 바인딩, 디버그 설정 등 사용자가 자유롭게 맞춤 설정 가능
언어 및 확장 지원
- Rust, C/C++, JavaScript, Go, Python 등 주요 언어를 기본적으로 지원함
- Debug Adapter Protocol (DAP) 을 구현한 모든 디버그 어댑터와 연동 가능
- 확장 시스템을 통해 보다 다양한 언어 및 디버깅 기능을 손쉽게 추가할 수 있음
간편한 디버깅 설정
- LOCATORS라는 새로운 시스템을 도입하여 빌드 설정을 디버그 설정으로 변환함
- 한 번
tasks.json에서 빌드 태스크를 작성한 뒤,debug.json에서 참조하거나, Zed의 자동 설정 기능을 활용할 수 있음
- 한 번
- Zed가 내장 또는 Language Server의 실행 가능한 파일에서 자동으로 locators를 실행함
- 대부분의 경우 별도의 디버그 설정 없이 바로 사용 가능함
- 현재 Cargo, Python, JavaScript, Go에 대한 locator 지원 제공 (추가 언어 예정)
디버깅 세션의 기능
- Zed 내에서 스레드, 변수, 브레이크포인트, 콜스택 등 프로그램 상태를 쉽게 확인 가능
- 디버거 패널은 완전히 사용자화 할 수 있어서, 탭을 드래그·정렬하거나 패널을 자유롭게 이동 가능
- 키보드 중심의 디버깅도 지원하여, 마우스 없이 코드 탐색, 브레이크포인트 토글, 세션 이동 가능
확장성 높은 아키텍처
- 다양한 언어 디버깅, 협업 환경, 확장 지원, 효율적 데이터 캐싱 및 관리가 가능한 구조를 위해 2계층 아키텍처를 설계함
- 데이터 레이어: 디버그 어댑터와 직접 통신, 세션 상태 유지, 응답 캐싱, 오래된 데이터 무효화 관리 담당
- UI 레이어: 필요한 데이터만 요청, 인터페이스 렌더링에 주력
- 이 분리 덕분에 협업(멀티플레이어) 디버깅 기능 구현이 용이하고, 네트워크 대역폭 절약 효과도 높음
확장 API와 DAP 적용
- 70개 이상의 다양한 DAP 구현체가 존재하여, 모든 것을 기본 지원하는 대신 Zed의 확장 API를 확장하여 디버거 통합을 가능하게 함
- 직접 스키마 정의, 어댑터 다운로드 및 실행 로직 구현, 디버그 설정 기본값 주입, locator와 자동 연동 등으로 DAP 지원 확장 가능
- LSP(언어 서버 프로토콜) 확장 방식과 유사하게, 개발자가 자신만의 디버그 어댑터를 Zed에 손쉽게 통합 가능
인라인 변수 값 지원
- 인라인 변수 값 표시 기능은 DAP가 아니라 LSP에 속해, DAP와 LSP가 모두 연계된 경우에만 기존 방식으로 제공 가능
- 정규표현식 등 단순 매칭은 스코프, 주석 등의 이슈로 정확도가 떨어짐
- Tree-sitter를 활용하여, 실행 중인 코드의 스코프 내 변수 식별이 정교하게 이루어짐
- 별도의 LSP 연동 없이
.scm파일을 통한 언어별 지원 가능 - 출시 시점에 Python, Rust, Go 지원, 추후 더 많은 언어 추가 예정
- 별도의 LSP 연동 없이
- Zed는 Tree-sitter의 창시자들이 만든 에디터임
향후 계획
- 새로운 뷰: 워치 리스트, 메모리 뷰, 디스어셈블리 뷰, 스택 트레이스 등 고급 기능 추가 예정
- 자동 설정: 더 많은 언어와 빌드 시스템에 대한 자동 설정 지원 확대 목표
- 다듬기와 확장: Discord, GitHub 등을 통해 피드백을 받고, 적극적인 개선 의지 보유
부록
- macOS, Linux에서 Zed를 사용할 수 있음
- 개발자 채용 중 (관심 있으면 공식 사이트 참고)