> 백엔드 개발 > PHP 튜토리얼 > PHP 마스터 | XDEBUG로 PHP 디버깅 및 프로파일 링

PHP 마스터 | XDEBUG로 PHP 디버깅 및 프로파일 링

William Shakespeare
풀어 주다: 2025-02-25 23:30:11
원래의
776명이 탐색했습니다.

PHP 개발자를위한 강력한 디버깅 및 성능 분석 도구 코어 포인트 :

xdebug는 디버깅 지원, 스택 추적, 성능 분석, 코드 적용 범위 및 기타 기능을 제공하는 강력하고 무료 및 오픈 소스 PHP 확장자입니다. 개발자는 언제든지 응용 프로그램 실행을 일시 중지하고 PHP가 실행되는 방식을 더 잘 이해하기 위해 변수 값을 확인할 수 있습니다. xdebug는 PHP 응용 프로그램의 성능 분석 도구로 사용될 수 있으며, 진술 및 기능 실행 시간 및 통화 수와 같은 중요한 세부 사항을 기록합니다. 이러한 출력을 분석하면 병목 현상이 어디에 있는지 이해할 수 있으므로 성능을 위해 애플리케이션을 최적화 할 수 있습니다. xdebug를 사용하려면 올바르게 설치하고 구성해야합니다. Xdebug는 XAMPP 또는 MAMP에 사전 설치되어 Php.ini에서 활성화합니다. 다른 플랫폼의 경우 패키지 관리자를 통해 설치할 수 있습니다. 다른 Zend 확장을 사용하면 Xdebug와 충돌 할 수 있습니다.

    PHP는 웹 개발에서 가장 인기있는 언어이지만 적절한 디버거가 부족하다는 비판을 받았습니다. Java 및 C#과 같은 언어를 사용하는 개발자는 종종 IDE에 직접 통합되는 강력한 디버깅 도구 스위트를 사용할 수 있습니다. 그러나 웹 서버와 PHP IDE의 분리로 인해 동일한 도구를 많이 사용하지 못했습니다. XDEBUG 가이 격차를 메울 때까지 코드에 디버그 문장을 수동으로 추가합니다. Xdebug는 Derick Rethans가 만든 무료 오픈 소스 프로젝트이며 아마도 가장 유용한 PHP 확장 중 하나 일 것입니다. 기본 디버깅 지원뿐만 아니라 추적, 성능 분석, 코드 커버리지 등을 제공합니다. 이 기사는 XDEBUG를 설치 및 구성하는 방법, NetBeans의 PHP 응용 프로그램을 디버깅하는 방법 및 Kcachegrind의 성능 분석 보고서를 읽는 방법을 설명합니다.
  • XDEBUG 설치 및 구성 XAMPP 또는 MAMP를 사용하는 경우 XDEBUG가 사전 설치되어 있습니다. Ubuntu와 같은 플랫폼에서 패키지 기반 설치를 사용하는 경우 와 같은 명령을 사용하여 패키지 관리자를 통해 설치할 수 있습니다. 내 php.ini에서 xdebug의 항목은 다음과 같습니다.
  • Xdebug 모듈의 경로를 지정하십시오. 값 토글 확장자가 활성인지 여부. 는 시스템 이름 또는 IP 주소입니다 (여기서는
  • 를 지정했지만 둘 다 동일한 컴퓨터에서 작업하지만 설정에 대해 다른 값을 지정 해야하는 경우 값은 IP 주소 또는 DNS 호스트 이름이 될 수 있습니다). . 는 클라이언트가 XDEBUG 연결에서 리의자를 듣는 포트입니다 (9000은 기본값). Xdebug를 사용할 때는 Xdebug와 충돌 할 수 있으므로 다른 Zend 확장을 사용하지 않도록하십시오. 다른 설치 옵션이 있습니다. XDEBUG 웹 사이트는 설치 프로세스를 안내하는 간단한 마법사를 제공합니다.
  • 또는
의 출력을 얻고 텍스트 상자에 붙여 넣고 마법사가 서버 구성을 분석하고 컴퓨터에서 XDEBUG를 컴파일하는 방법을 안내 할 수 있습니다.

디버그

일반적으로 와 의 조합을 사용하여 디버그를 유혹하고 있습니다. 그러나이 접근법의 문제점은 디버그로 코드를 수정해야한다는 것입니다. Xdebug는 응용 프로그램 실행을 필요로하는 곳마다 일시 중지 할 수있게하여이를 극복합니다. 그런 다음 해당 범위의 변수 값을 확인하여 PHP가 실행되는 방식을 더 잘 이해할 수 있습니다. NetBeans가 Xdebug 클라이언트 역할을하도록 쉽게 구성 할 수 있습니다. 옵션 창 (Tools & GT; 옵션)을 열고 PHP 섹션의 디버그 탭으로 이동하십시오. php.ini에 제공된 디버그 포트 및 세션 ID를 입력하면 디버그하려는 요청을 사용하여 세션 ID를 전달해야합니다. 이제 도구 탭에서 디버그를 클릭하여 디버거를 실행할 수 있습니다.

var_dump() exit/die() 소스 파일을 열면 도구 모음에서 "디버그"버튼을 클릭하여 디버깅을 시작하십시오. 브라우저에서 응용 프로그램이 열리고 옵션 창에서 "첫 번째 줄 정지"옵션이 활성화되면 파일의 첫 번째 줄에서 PHP 실행이 일시 중지됩니다. 그렇지 않으면 첫 번째 중단 점이 발생할 때까지 실행됩니다. 거기서부터 계속 버튼을 사용하여 다음 중단 점으로 계속 될 수 있습니다. 브라우저 URL 막대의 XDEBUG_SESSION_START 매개 변수입니다. 디버거를 트리거하려면 XDEBUG_SESSION_START는 쿠키 매개 변수로 요청 매개 변수 (get/post) 또는 xdebug_session으로 전달되어야합니다. 디버그 도구 모음에는 다른 유용한 작업이 있습니다. 그들은 :

입니다

단계별 - 현재 실행중인 선을 건너 뜁니다 PHP Master | Debugging and Profiling PHP with Xdebug 단일 단계에서 함수로 (지정되지 않은 함수의 경우) 단일 단계 출력-현재 함수 에서 점프합니다

편집기 마진에서 줄 번호를 클릭 한 다음 중단 점에서 실행을 일시 중지하여 중단 점을 추가 할 수 있습니다. 다시 클릭하여 삭제할 수 있습니다. 또는 Window> Debug> 브레이크 포인트로 이동하여 프로그램의 모든 중단 점을 나열하면 필요한 중단 점 만 선택/탈퇴 할 수 있습니다. 런타임에 현재 범위의 변수 상태가 변수 창에 표시됩니다. 로컬 변수의 값과 , ,

, 및 와 같은 슈퍼 글로벌 변수를 표시합니다). 당신은 당신이 진술을 진행할 때 그들의 값이 어떻게 변하는지를 관찰 할 수 있습니다.

  • 성능 분석
  • 성능 분석은 모든 응용 프로그램을 최적화하는 첫 번째 단계입니다. 성능 분석 도구는 진술 및 기능 실행에 필요한 시간, 통화 수 등과 같은 중요한 세부 사항을 기록합니다. 병목 현상이 어디에 있는지 이해하기 위해 출력을 분석 할 수 있습니다. Xdebug는 PHP의 성능 분석 도구로도 사용할 수 있습니다. 응용 프로그램 분석을 시작하려면 php.ini에 다음 설정을 추가하십시오.
    <code>[xdebug]
    zend_extension="/Applications/MAMP/bin/php5.2/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
    xdebug.remote_enable=1
    xdebug.remote_host=localhost
    xdebug.remote_port=9000</code>
    로그인 후 복사
    속성 분석은 XDEBUG에서 기본적으로 비활성화되므로

    는이를 활성화하는 데 사용됩니다. 는 Performance Analyzer Log의 파일 이름입니다 ( 지정자는 타임 스탬프를 파일 이름에 추가하고 전체 지정자 목록에 대한 문서를 참조하십시오). Xdebug는 로 지정된 디렉토리에 성능 분석 출력을 저장합니다. 선택한 모든 곳으로 변경할 수 있지만 PHP 스크립트를 실행하는 사용자 계정에는 쓰기 권한이 있어야합니다. PHP 엔진은 각 기능 호출을보고 세부 사항을 기록해야하므로 성능 분석은 성능 저하 될 수 있으므로 항상 실행하고 싶지 않습니다. xdebug는 xdebug_profile이 Get 또는 Post 매개 변수로 전달 될 때만 성능 분석을 수행하도록 지시합니다. XDEBUG에서 생성 한 로그 파일의 크기는 응용 프로그램 작동에 따라 다를 수 있습니다. 또한 읽기가 쉽지 않습니다. Kcachegrind 또는 Webgrind와 같은 프로그램을 사용하여이를 볼 필요가 있습니다. Kcachegrind는 UNIX 환경이 실행되어야하는 KDE의 성능 분석 데이터 시각화 도구이며 WebGrind는 웹 기반 도구입니다. kcachegrind에서 성능 분석 로그 파일을 열면 main ()에서 시작하는 각 기능 호출 비용이 표시됩니다. 다음은 Factorial 기능의 성능 분석 출력의 Kcachegrind 시각화입니다. xdebug.profiler_enable xdebug.profiler_output_name 왼쪽 패널 (함수 요약)은 실행 순서대로 각 함수에 소요 된 시간을 표시합니다. 오른쪽 상단의 패널은 크기가 함수 비용에 해당하는 동일한 정보를 그래픽으로 표시합니다. 통화 그래프는 응용 프로그램의 함수 간의 관계를 나타냅니다. 이 예에는 Main ()과 Fact ()의 두 가지 함수 만 있습니다. 사실 ()은 그림의 루프로 표시되는 재귀 함수입니다. 코드를 최적화 할 때는 총 비용이 가장 높은 영역을 찾아야합니다. 일반적으로 I/O 작동이 가장 비쌉니다. 가능한 한 최소화하는 것을 잊지 마십시오. 의미있는 파일의 게으른로드. 온라인 상점에서 모든 주문 목록과 해당 세부 정보를 제공하는 주문이라는 클래스가 있다고 가정 해 봅시다. %t xdebug.profiler_output_dir 이 클래스에는 getAll ()와 getDetails ()의 두 가지 방법이 있습니다. getAll () 메소드를 호출하면 모든 레코드의 세부 사항을 얻기 위해 주문 테이블에 모든 레코드를 가져 와서 루프합니다. 성능 분석 정보를 살펴 보겠습니다. xdebug.profiler_enable_trigger

    절대 숫자는 중요하지 않지만 플랫폼 및 런타임 조건에 의존하므로 다른 기능의 상대적 비용을 이해하게됩니다. 일부 기능은 수백 번 (물론 나쁜)라고합니다. 코드는 모든 주문을 루프하고 각 주문의 세부 사항을 별도로 얻을 필요가 없습니다. join을 사용하려면 getall () 함수를 무시하겠습니다. PHP Master | Debugging and Profiling PHP with Xdebug

    성능 분석은 이제 쿼리 수가 줄어들므로 더 나은 결과를 얻습니다. 또한 코드는 더 이상 getDetails () 함수를 호출하지 않습니다.

    <code>xdebug.profiler_enable = 1
    xdebug.profiler_output_name = xdebug.out.%t
    xdebug.profiler_output_dir = /tmp
    xdebug.profiler_enable_trigger = 1</code>
    로그인 후 복사
    요약

    xdebug는 중개자 역할을하며 서버에서 PHP 프로그램의 실행을 제어합니다. 이 기사에서는 Xdebug -Debug 지원 및 성능 분석 지원의 가장 인상적인 기능 중 두 가지를 보았습니다. 원격 디버깅을 사용하면 프로그램을 수정하지 않고 런타임시 값을 확인할 수 있으므로 PHP가 실행되는 방식을 더 잘 이해할 수 있습니다. 성능 분석은 코드에서 병목 현상을 식별하여 성능을 위해 최적화 할 수 있습니다. 이 기사가 Xdebug의 이점을 이해하는 데 도움이되기를 바랍니다. 아직 사용하지 않은 경우 바로 사용하도록 권장합니다. 이것이 귀중한 도구를 찾으면 지원 계약을 구매 하여이 훌륭한 프로젝트를 지원하는 것을 고려할 수도 있습니다. (참고 : 위의 그림 자리 표시자는 실제 스크린 샷으로 교체해야합니다.)

위 내용은 PHP 마스터 | XDEBUG로 PHP 디버깅 및 프로파일 링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿