Code Tracer는 개발자의 디버깅 경험을 혁신하기 위한 다양한 강력한 기능을 제공합니다. 첫째, 핵심 기능인 ‘시간 여행 디버깅’은 사용자가 코드 실행을 역방향으로 탐색할 수 있게 하여, 버그가 발생한 지점에서 거꾸로 추적하여 근본 원인을 파악하는 데 용이합니다. 이는 이전 브레이크포인트나 코드 라인으로 쉽게 되돌아갈 수 있음을 의미합니다. 둘째, ‘코드 트레이스’는 모든 함수 호출을 시각적으로 목록화하여 프로그램의 전반적인 실행 흐름을 한눈에 파악하고 특정 함수 호출 지점으로 즉시 이동할 수 있도록 돕습니다. 셋째, ‘옴니시언트 루프 컨트롤’을 통해 반복문의 각 단계를 앞뒤로 자유롭게 이동하며 해당 시점의 모든 변수 값을 인라인으로 확인할 수 있어, 루프 내의 복잡한 로직을 쉽게 이해할 수 있습니다. 넷째, ‘이벤트 로그’는 네트워크, 파일 I/O, 에러 등 프로그램과 외부 환경 간의 모든 비결정적 상호작용을 기록하여, 재현하기 어려운 버그의 원인이 되는 외부 요인을 추적하고 정확히 재현할 수 있도록 합니다. 다섯째, ‘상태 패널’은 현재 코드 라인에서 접근 가능한 지역 변수들을 보여줄 뿐만 아니라, 각 변수의 변경 이력을 시계열로 제공하여 변수 값의 변화 과정을 명확히 파악할 수 있게 합니다. 여섯째, ‘트레이스 로그’ 기능은 디버깅 세션 도중에 코드를 주입하여 특정 변수 값을 로그로 기록할 수 있게 함으로써, 프로그램을 재빌드하거나 재실행할 필요 없이 실시간으로 추가 정보를 얻을 수 있습니다. 마지막으로, ‘스크래치 패드’는 관심 있는 변수들을 따로 모아두고 나중에 비교 분석할 수 있게 하여 복잡한 객체나 여러 지점의 값을 동시에 관찰할 때 유용합니다. 발표에서는 ‘우주선’ 예제를 통해 Code Tracer의 실제 디버깅 시나리오를 시연하며, 초기 데미지 계산 오류, 음수 데미지 발생, 예상치 못한 테스트 실패 등 실제 발생할 수 있는 버그 상황에서 Code Tracer의 기능들이 어떻게 문제를 빠르고 효과적으로 해결하는 데 기여하는지 상세히 보여주었습니다. 특히, 기록된 트레이스 파일을 다른 동료와 공유하여 버그 재현 시간을 획기적으로 줄일 수 있는 협업 기능도 강조되었습니다. Code Tracer는 2017년에 Zahari Kaj와 Alexander Vanov에 의해 시작되었으며, Ruby는 초기부터 주요 지원 언어 중 하나였습니다. 2022년부터 팀이 확장되었고, 2023년 3월 첫 공개 릴리즈를 통해 일반에 공개되었습니다. 현재 단기 로드맵은 스크립팅 언어 백엔드 개선, 다중 플랫폼(특히 Windows) 지원 강화, 사용자 피드백 반영에 초점을 맞추고 있으며, 장기적으로는 더 많은 프로그래밍 언어 지원, Emacs, Vim, VS Code와 같은 코드 에디터 확장, Debugger Adapter Protocol 통합, IDE 기능 추가, 그리고 WebAssembly(WASM) 지원까지 계획하고 있습니다.
Code Tracer: Ruby 프로그램 디버깅의 새로운 접근 방식
Franz Fischbach and Stanislav Vasilev – CodeTracer, A new way to debug Ruby
작성자
Balkan Ruby
발행일
2025년 05월 02일
핵심 요약
- 1 Code Tracer는 Ruby 프로그램을 위한 혁신적인 타임 트래블 디버거로, 프로그램 실행 과정을 영상처럼 기록하여 버그를 효율적으로 추적하고 재현합니다.
- 2 역방향 디버깅, 변수 이력 추적, 이벤트 로그, 디버깅 중 코드 주입 등 강력한 기능을 통해 개발자의 디버깅 경험을 개선합니다.
- 3 오픈 소스 프로젝트로 활발히 개발 중이며, Ruby의 Trace API 개선과 Windows 지원 등 지속적인 발전을 위해 커뮤니티의 기여와 관심을 장려합니다.
도입
본 발표는 Staniswaf와 France가 개발한 혁신적인 Ruby 프로그램 디버거인 'Code Tracer'를 소개합니다. 발표자들은 디버깅 과정에서 흔히 겪는 개발자들의 좌절감과 어려움을 언급하며, Code Tracer가 이러한 문제를 해결할 수 있는 새로운 접근 방식을 제공한다고 강조합니다. Code Tracer는 프로그램의 모든 실행 과정을 기록하여 사용자가 마치 비디오를 재생하듯 코드를 앞뒤로 탐색하고, 특정 시점으로 이동하여 버그의 원인을 심층적으로 분석할 수 있게 하는 '시간 여행 디버거'입니다. 이는 기존 디버거의 한계를 뛰어넘어 개발자가 버그를 발견하고 수정하는 데 드는 시간과 노력을 획기적으로 줄여줄 잠재력을 가지고 있습니다.
결론
Code Tracer는 Ruby 프로그램을 위한 강력한 디버깅 도구이지만, 현재 Ruby의 Trace API 및 인터프리터의 비효율성으로 인해 대규모 프로젝트에서는 성능상 제약이 있을 수 있음을 인정합니다. 발표자들은 이러한 문제를 해결하고 프로젝트를 더욱 발전시키기 위해 커뮤니티의 적극적인 관심과 기여가 필수적이라고 강조합니다. Code Tracer는 오픈 소스 프로젝트로, GitHub 저장소, 상세한 문서화, Discord 서버 등 다양한 채널을 통해 누구나 참여하고 피드백을 제공할 수 있습니다. 특히 Ruby 백엔드 코드인 'code_tracer_ruby_recorder'는 규모가 작아 학습 및 기여가 용이하다고 언급됩니다. 발표는 Code Tracer가 앞으로도 지속적인 개선을 통해 개발자들에게 더욱 강력하고 효율적인 디버깅 경험을 제공하며, 다음 해 컨퍼런스에서는 더 많은 발전된 내용을 공유할 것을 기대하며 마무리됩니다.