PhpStorm으로 디버그

PhpStorm과 Xdebug로 빠짐없이 PHP를 디버그하세요.

중단점 설정 및 관리

PhpStorm의 디버그 GUI에는 유용한 중단점 도구가 있습니다. 조건부 중단점을 사용하면 반복문 내의 특정 항목과 같이 특정 조건에 초점을 맞출 수 있습니다. 예외가 발생할 때 이를 포착해야 하나요? 프로젝트 전체 코드 베이스에 적용할 수 있는 예외 중단점을 사용해 보세요.

중단점과 해당 설정은 소스 파일에는 영향을 주지 않지만, PhpStorm 프로젝트에 저장되어 디버그 세션마다 재사용될 수 있습니다.

코드를 줄별로 실행

실행된 코드의 제어 흐름이나 데이터 구조를 빠짐없이 디버그하고 검증하고 싶은 경우 중단점을 여기저기 놓을 필요가 없습니다. 대신 Debug(디버그) 도구 창에서 코드를 살펴보면서 단계별로 현재의 프레임 스택과 변수를 검사하면 됩니다.

조금 더 세밀하게 줄별로 디버그하기 위해 특정 함수로 스텝인투할 수도 있습니다.

가정을 테스트하고 코드의 역할을 확인

대화형 디버그 창

PhpStorm의 대화형 Debug(디버그) 도구 창을 사용하면 소스 코드를 건드리지 않고 변수, 호출을 변경하고, PHP 함수를 정의하거나 임의의 표현식을 평가하는 등 현재 프로그램의 상태를 다양하게 변경해 볼 수 있습니다.

인라인 디버거

프로그램이 중단될 때 변숫값 확인 및 감시점 추가를 Debug(디버그) 도구 창에서뿐만 아니라 코드 에디터 내 인라인으로도 수행할 수 있습니다. 변경된 값이 강조 표시되기 때문에 마지막으로 중단점에 도달한 후에 무엇이 변경되었는지 손쉽게 확인할 수 있습니다.

데이터 흐름 예측

PhpStorm은 중단점에서 PHP 디버거를 통해 수신한 테이터를 활용해 해당 코드 조각이 실행되면 어떤 일이 일어날지 알려주는 힌트를 에디터 내에 표시합니다. 경로상의 코드 블록이 도달할 수 없는 것으로 예측되는 경우 회색으로 표시됩니다.

어디서든 디버그

로컬/원격 디버그

원격 웹 서버, Docker 컨테이너, 가상 머신 혹은 SSH를 통한 원격 호스트 등 어디에서든 실행되는 모든 코드로부터 실시간 디버그 데이터를 얻을 수 있습니다. 서버 파일을 PhpStorm 프로젝트 내 사본으로 매핑하고, Xdebug를 설정한 다음 PhpStorm 내에서 수신되는 디버그 연결의 리스닝을 활성화하세요.

JavaScript 디버깅

PhpStorm에는 WebStorm의 JavaScript 디버거가 온전히 탑재되어 있습니다. 브라우저 내에서 JavaScript와 Node.js가 지원되며 Xdebug와 JavaScript 디버거를 동시에 실행할 수도 있습니다.

Blade 및 Twig 템플릿에서 디버그

Blade 및 Twig 템플릿에서 디버그를 설정하고 PHP 파일을 다루듯이 디버그하세요. 컴파일된 파일에 템플릿 코드 참조가 없나요? PhpStorm이 설정된 중단점이 잡히지 않을 경우 경고합니다.

HTTP API 호출 디버그

PHP 서버로 보내지는 HTTP 요청을 PhpStorm 에디터 내의 HTTP 클라이언트에서 바로 디버그할 수 있습니다. IDE가 자동으로 Xdebug 쿠키를 요청에 추가하고 실행한 다음, 관련된 PHP 파일의 지정된 중단점에서 중단합니다.

프로파일링 데이터 표시 및 분석

디버그에 더해서 PhpStorm은 Xdebug가 생성한 프로파일링 데이터의 시각적인 보고서를 빌드합니다. 한 번에 여러 개의 스냅샷을 선택하고 프로파일링 집계 정보를 수집할 수 있습니다. 집계 보고서에서는 실행 통계에서 바로 PHP 코드 내의 관련 함수로 이동할 수 있습니다.

설정은 IDE에 맡기세요

Xdebug 구성 검증

PhpStorm은 로컬 혹은 원격 웹 서버에 설치된 Xdebug로부터 데이터를 가져와 IDE 내에서 강력하면서도 유연한 디버그 경험을 제공합니다. 막힘없이 설정할 수 있도록 IDE가 관련 환경에서 디버거 설정을 검증하며 이슈가 감지되면 적절한 해결책을 제안합니다.

구성이 필요 없는 디버그

디버그 설정이 따로 필요 없기 때문에 브라우저에서 PHP 애플리케이션의 시작 페이지만 열고 디버그 엔진을 활성화하기만 하면 됩니다. 그러면 PhpStorm이 수신되는 디버거 연결을 리스닝하여 디버그 데이터를 시각화합니다.