IT
PHP Xdebug
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 예시
-
PHPStorm에서 Settings > Languages & Frameworks > PHP > Debug 이동.
-
Debug Port를 9003으로 설정.
-
PHP Interpreter에 Xdebug가 포함된 PHP 실행 환경 등록.
-
브라우저에서 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 버전 호환성을 반드시 확인.
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.