IMG-LOGO
공지사항 :

PHP Xdebug

lmkfox - 2025-08-15 07:04:37 39 Views 0 Comment

1. Xdebug 주요 기능

(1) 스택 트레이스(Stack Trace)

  • 오류 발생 시 코드 실행 경로를 표시합니다.

  • 파일명, 라인 번호, 호출된 함수 목록, 변수 상태 등을 확인할 수 있습니다.

  • 예: Fatal error 발생 시 어떤 함수 호출 경로에서 에러가 났는지 확인 가능.

(2) 변수 검사(Variable Inspection)

  • 실행 중인 시점에서 변수 값, 타입을 실시간 확인 가능.

  • IDE(예: PHPStorm, VSCode)와 연동하면 코드에 브레이크포인트를 설정하고, 한 줄씩 실행하며 값 확인 가능.

(3) 코드 디버깅(Breakpoint Debugging)

  • 특정 라인에 브레이크포인트를 설정하면, 해당 라인에서 코드 실행이 멈추고 변수 상태를 점검할 수 있습니다.

(4) 성능 분석(Profiling)

  • 어떤 함수가 실행되었고, 각 함수가 실행되는 데 걸린 시간을 기록.

  • cachegrind 형식으로 결과를 저장하며, KCacheGrind 같은 툴로 시각화 가능.

(5) 코드 커버리지(Code Coverage)

  • PHPUnit 같은 테스트 도구와 연계해, 테스트가 코드의 몇 %를 실행했는지 확인 가능.


2. Xdebug 설치

(1) Linux (예: Ubuntu)

sudo apt install php-xdebug

(2) macOS (Homebrew)

brew install php-xdebug

(3) 설치 확인

php -v

출력 예:

PHP 8.x.x (cli) ...
with Xdebug v3.x.x, ...


3. php.ini 설정

Xdebug 설치 후 php.ini 또는 별도 설정 파일에 추가합니다.

기본 설정 예시

zend_extension="xdebug.so"    ; Xdebug 모듈 로드
xdebug.mode=debug             ; 디버그 모드 활성화 (debug, develop, profile 등 가능)
xdebug.start_with_request=yes ; 요청 시작 시 디버깅 시작
xdebug.client_host=127.0.0.1  ; IDE가 실행 중인 호스트 IP
xdebug.client_port=9003       ; Xdebug 기본 포트(3.x 버전부터 9003)

Xdebug 모드 옵션 (콤마로 구분하여 여러 개 설정 가능)

  • develop : var_dump 개선, 오류 표시 강화

  • debug : IDE와의 원격 디버깅

  • profile : 성능 분석

  • coverage : 코드 커버리지 측정


4. IDE와 연동

PHPStorm 예시

  1. PHPStorm에서 Settings > Languages & Frameworks > PHP > Debug 이동.

  2. Debug Port를 9003으로 설정.

  3. PHP Interpreter에 Xdebug가 포함된 PHP 실행 환경 등록.

  4. 브라우저에서 Xdebug 쿠키(XDEBUG_SESSION=1)를 설정하거나, 자동 시작 모드 사용.


5. 성능 분석(Profiling) 사용 예

xdebug.mode=profile
xdebug.output_dir="/var/tmp/xdebug"

  • 실행 후 /var/tmp/xdebug에 .cachegrind 파일이 생성됨.

  • qcachegrind 또는 KCacheGrind로 열어 분석.


6. 주의할 점

  • 운영 서버에서는 Xdebug를 항상 꺼두는 것이 좋습니다. (성능 저하 발생 가능)

  • 디버그 포트(9003)가 방화벽에서 열려 있어야 원격 디버깅 가능.

  • PHP 버전과 Xdebug 버전 호환성을 반드시 확인.


댓글