디버거

디버거 (phpdbg)

phpdbg는 PHP에 내장된 대화형 디버거(interactive debugger)예요. SAPI 모듈로 구현되어 있어서, 코드의 기능이나 성능에 영향을 주지 않으면서 실행 환경을 완전히 제어할 수 있습니다. 이 페이지에서는 phpdbg의 개요와 기능을 살펴봐요.

출처: Interactive PHP Debugger

본문

phpdbg는 SAPI 모듈로 구현되어 있어요. 그 덕분에 코드의 기능이나 성능에 영향을 주지 않으면서 실행 환경을 완전히 제어할 수 있습니다.

phpdbg는 PHP를 위한 가볍고(lightweight) 강력하면서도 쓰기 쉬운 디버깅 플랫폼을 목표로 해요. 제공하는 기능은 다음과 같습니다.

  • 단계별 디버깅(Step-Through Debugging) — 코드를 한 줄씩 실행하며 따라갈 수 있어요
  • 유연한 중단점(Flexible Breakpoints) — 클래스 메서드, 함수, 파일:라인, 주소(address), opcode 단위로 중단점을 걸 수 있어요
  • 내장 eval()로 PHP에 쉽게 접근 — 실행 중간에 PHP 코드를 평가해볼 수 있어요
  • 사용자 영역 API(Userland API) — PHP 코드에서 디버거 기능을 제어할 수 있어요
  • SAPI 무관(SAPI Agnostic) — 어떤 SAPI에서도 쉽게 통합됩니다
  • PHP 설정 파일 지원(PHP Configuration File Support) — php.ini 같은 설정을 반영해요
  • JIT 수퍼글로벌(Super Globals) — 직접 설정 가능 — 나만의 수퍼글로벌을 정의할 수 있어요
  • 선택적 readline 지원 — 편안한 터미널 조작
  • 쉬운 조작help를 보면 바로 어느 정도 감을 잡을 수 있어요

phpdbg가 제공하는 함수는 다음과 같아요.

  • phpdbg_break_file — 특정 파일의 특정 라인에 중단점 추가
  • phpdbg_break_function — 함수 진입 시 중단점 추가
  • phpdbg_break_method — 메서드 진입 시 중단점 추가
  • phpdbg_break_next — 다음 opcode에서 중단
  • phpdbg_clear — 중단점을 모두 지움
  • phpdbg_color — 출력에 색을 지정
  • phpdbg_end_oplog — opcode 로그 기록 종료
  • phpdbg_exec — 디버거에서 코드 실행
  • phpdbg_get_executable — 현재 실행 중인 파일명 조회
  • phpdbg_prompt — 대화형 프롬프트 설정
  • phpdbg_start_oplog — opcode 로그 기록 시작

더 알아보기