> php教程 > php手册 > 본문

PHP 디버깅 도구 - xdebug

WBOY
풀어 주다: 2016-08-08 08:49:48
원래의
1257명이 탐색했습니다.

이전에는 Evernote에 정리되어 있었는데 지금은 옮겨졌습니다. 로컬 디버깅과 원격 디버깅으로 구분됩니다. 이 글은 개인적으로 테스트를 거쳐 스크린샷을 촬영한 것입니다. 궁금한 사항이 있으면 메시지를 남겨주세요.
(인터넷에 있는 많은 선배님들의 블로그를 참고하다가 노트에 원본 링크를 저장하는 걸 깜빡해서 여기에 링크를 올릴 수 없으니 양해 부탁드립니다)
# 아픈곳

일반적으로 PHP 프로젝트를 디버깅할 때 echo, var_dump() 등의 함수를 사용하는데, 프로젝트 규모가 크면 매우 불편하고 비효율적입니다.

# 준비

xdebug 확장 설치
공식 홈페이지 https://xdebug.org/download.php
Windows의 경우 해당 버전을 찾아서 다운로드하면 됩니다. Linux의 경우 https://xdebug.org/wizard.php 페이지에 php -i의 출력 결과를 넣으면 방법이 표시됩니다. 다음과 같이 매우 편리합니다.
1, php 설정 파일을 수정하고 마지막에 추가하세요.
zend_extension = "E:/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11-x86_64.dll";
[x디버그]
xdebug.auto_trace=켜기
xdebug.collect_params=켜기
xdebug.collect_vars = On ;변수 수집
xdebug.collect_return = On; 반환값 수집
xdebug.trace_output_dir="e:/wamp/tmp/debuginfo"
xdebug.remote_enable = 켜짐
xdebug.remote_handler = dbgp
xdebug.remote_host= localhost ; 원격 디버깅 서버 주소에 사용됩니다.
xdebug.remote_connect_back = 1 원격 디버깅용
xdebug.remote_port = 9000
xdebug.idekey = PHPSTORM
xdebug.profiler_enable = 켜짐
xdebug.profiler_enable_trigger = 꺼짐
xdebug.profiler_output_name=cachegrind.out.%t.%p
xdebug.profiler_output_dir = "E:/wamp/tmp/debuginfo"
xdebug.show_local_vars=0
xdebug.show_Exception_trace = On ; 예외 추적 켜기
xdebugbug.max_nesting_level = 10000
xdebug 확장이 활성화되어 있는지 phpinfo에서 확인하세요. 서버 구성이 완료되었습니다!
2, phpstrom 구성
이 섹션에서 구성된 포트는 IDE가 이 시스템의 포트 9000을 수신한다는 의미입니다

프로젝트 오른쪽 상단 디버그 구성
다음과 같이 프로젝트에 따라 유형을 선택하고, 웹사이트용 웹 애플리케이션을 선택한 후 이름 항목을 사용자 정의
서버 항목을 사용할 수 없습니다. 아래 버튼을 클릭하여 구성하세요
starturl(항목 주소) 구성

완성된 구성은 다음과 같습니다.

해당 버그를 클릭하면 디버깅이 활성화되고 다음과 같이 이전 단계에서 구성한 기본 브라우저에서 starturl이 열립니다.

코드에 중단점을 넣고 페이지를 새로 고치면 디버깅 창에 자세한 정보가 표시되며 다음과 같은 작업 버튼이 있습니다.

# 장소 최적화

위의 디버깅 단계는 매우 번거로운 작업입니다. 디버깅을 원할 때마다 권장되는 플러그인인 xdebug 도우미를 사용하면 언제든지 버그 아이콘을 구성할 수 있습니다. 설치하는 동안 다음과 같이 하세요:

디버깅이 필요한 페이지에서 플러그인 활성화
다음과 같이 IDE에서 전화 아이콘을 켜고 모니터링을 시작합니다.

구성이 완료된 후 코드를 디버그하려면 브라우저가 페이지에 액세스하고 중단점까지 실행한 후 IDE가 디버그 정보를 모니터링하고 정보를 표시합니다. 🎜>

#xdebug 원격 디버깅

일부 프로젝트는 로컬 개발을 위한 환경 설정이 어렵습니다. 원격으로 개발하고 디버깅해야 합니다. 이는 원격 개발 시스템의 코드를 로컬로 디버그하는 것입니다.

! 0. 원격 디버깅 원리:

왼쪽에는 IDEA, Eclipse 등의 IDE, 오른쪽에는 xdebug 등의 디버깅 클라이언트가 있습니다.
1. IDE는 디버깅 포트를 수신합니다. 기본값은 9000이며 직접 구성할 수 있습니다.
2. 사용자는 오른쪽의 PHP 환경에서 서버에 액세스합니다. 여기서는 브라우저를 사용하여 액세스합니다(어디서든 수행할 수 있으며 편의를 위해 로컬 브라우저를 선택합니다).
일반 URL 뒤에.
XDEBUG_SESSION_START=난수 매개변수입니다. 이 매개변수는 디버깅을 위해 IDE의 9000 포트에 적극적으로 연결하도록 xdebug에 알리는 데 사용됩니다. 이 매개변수가 없으면 xdebug는 IDE에 적극적으로 연결되지 않습니다.
디버깅이 실행되지 않습니다.
3. xdebug가 IDE의 9000 포트에 적극적으로 연결되면 디버깅이 시작됩니다.
xdebug는 IDE가 포트 9000에서 수신 대기 중인지 어떻게 알 수 있나요?
xdebug에는 두 가지 구성이 있습니다. 각각 IDE의 IP 주소와 수신 포트를 나타내는 Remote_host와 Remote_port입니다. IDE와 xdebug가 수신 포트를 협상해야 함을 알 수 있습니다.
포트는 다루기 쉬운데, IP가 바뀌면 IP가 바뀌면 xdebug.remote_host 구성을 수정해야 하는 거 아닌가요? 정말 번거 롭습니다! ! !
IP를 몰라도 상관없습니다. xdebug.remote_connect_back을 1로 설정하면 됩니다. 작동 원리는 아래 그림과 같이 매우 간단합니다.
주소를 입력한 다음 이 IP 주소를 원격 호스트로 사용하여 연결하세요.

! 1. 서버 환경에 xdebug 설치(위 방법)

가장 중요한 두 가지 설정은 xdebug.remote_host와 xdebug.remote_connect_back입니다.
xdebug.remote_host는
로컬 주소로 설정해야 합니다. 여러 주소는 쉼표로 구분
xdebug.remote_connect_back을 1 또는 on으로 설정해야 합니다
이렇게 설정한 후에는 로컬 IP가 자동으로 얻어지거나 여러 사람이 있는 경우에는 remote_host 설정이 자동으로 무시됩니다.
서버 구성이 완료되었습니다!

! 2. IDE 구성
(원격 코드 디버깅은 일반적으로 원격 개발과 동시에 수행됩니다. 원격 디버깅은 로컬 및 원격 채널을 열어야 하며 그렇지 않으면 디버깅 정보가 수신되지 않습니다.)
> 새로운 원격 PHP 인터프리터 만들기

아래 그림과 같이 구성이 올바른 경우:
> 새 프로젝트를 생성하거나 기존 로컬 프로젝트를 원격 프로젝트에 매핑

> 프로젝트에서 SFTP 구성

그런 다음 매핑을 구성하세요

다음과 같이 원격 코드를 다운로드하세요.

스크린샷 찍으세요 너무 피곤해요
이때 구성을 시작한 원격 인터프리터를 살펴보세요. 매핑을 구성했기 때문에 이전 경고가 사라졌습니다.

디버그 구성, 단계는 위와 동일하며 차이점은 경로 매핑 구성입니다

디버깅이 시작되었습니다.브라우저가 원격 주소에 액세스합니다.

디버그 창에 이미 있습니다.

내 504는 무시하세요. 이건 다른 이유에서 발생한 것이고 xdebug와는 아무런 관련이 없습니다. 테스트 프로젝트이고 제가 처리하기엔 너무 게으른데요~~
원격 프로젝트를 개발하기 위해 방금 sftp를 구성했습니다. 다음 구성을 통해 로컬 수정 사항을 자동으로 원격 끝단에 동기화할 수 있습니다. 저는 일반적으로 Ctrl + s를 누르면 원격 개발에 자동으로 동기화됩니다. 기계

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!