오류 발생 시 코드 실행 경로를 표시합니다.
파일명, 라인 번호, 호출된 함수 목록, 변수 상태 등을 확인할 수 있습니다.
예: Fatal error 발생 시 어떤 함수 호출 경로에서 에러가 났는지 확인 가능.
실행 중인 시점에서 변수 값, 타입을 실시간 확인 가능.
IDE(예: PHPStorm, VSCode)와 연동하면 코드에 브레이크포인트를 설정하고, 한 줄씩 실행하며 값 확인 가능.
특정 라인에 브레이크포인트를 설정하면, 해당 라인에서 코드 실행이 멈추고 변수 상태를 점검할 수 있습니다.
어떤 함수가 실행되었고, 각 함수가 실행되는 데 걸린 시간을 기록.
cachegrind 형식으로 결과를 저장하며, KCacheGrind 같은 툴로 시각화 가능.
PHPUnit 같은 테스트 도구와 연계해, 테스트가 코드의 몇 %를 실행했는지 확인 가능.
sudo apt install php-xdebug
brew install php-xdebug
php -v
출력 예:
PHP 8.x.x (cli) ...
with Xdebug v3.x.x, ...
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 : 코드 커버리지 측정
PHPStorm에서 Settings > Languages & Frameworks > PHP > Debug 이동.
Debug Port를 9003으로 설정.
PHP Interpreter에 Xdebug가 포함된 PHP 실행 환경 등록.
브라우저에서 Xdebug 쿠키(XDEBUG_SESSION=1)를 설정하거나, 자동 시작 모드 사용.
xdebug.mode=profile
xdebug.output_dir="/var/tmp/xdebug"
실행 후 /var/tmp/xdebug에 .cachegrind 파일이 생성됨.
qcachegrind 또는 KCacheGrind로 열어 분석.
운영 서버에서는 Xdebug를 항상 꺼두는 것이 좋습니다. (성능 저하 발생 가능)
디버그 포트(9003)가 방화벽에서 열려 있어야 원격 디버깅 가능.
PHP 버전과 Xdebug 버전 호환성을 반드시 확인.