xDebug 설치로 PHP 디버깅 하기

PHP

xDebug 설치로 PHP 디버깅 하기

 

개발환경 : window 7 32bit, PHP 5.2, eclipse indigo

 

디버거는 보통 2종류가 있는데 Zend Debugger XDebug 가 있다.

APM 을 설치하게 되면 환경설정에 기본적으로 Zend Debugger 는 설치되어있다.

하지만 설치가 간단하고 사용하기에 크게 무리가 없는 xDebug 에 대한

설치와 사용에 대한 내용을 기술하였다.

두가지의 장단점을 비교해서 사용해 보고 싶었지만 디버그 라는게 특별한 기능을

요구하는 것이 아니고 Breakpoint 만 잘 걸린다면 어느것을 사용해도 상관없을 거라

생각했기 때문에 Zend Debugger 에 대해서는 언급하지 않았다.

 

1. vc 버전 확인하고 다운받기

 

xdebug 를 사용하기 위해서는 xdebug 에서 나오는 DLL 이 필요하다.

그런데 이 DLL 의 종류는 두가지인데 vc6 vc9 이다. 현재 자신의

PHP 버전에 VC 가 둘중에 어떤것인지 알아야 제대로 다운받아서

디버그 기능을 사용할수 있기 때문이다.

 

(1) phpinfo() 정보를 화면에 출력

 

phpinfo.php 클래스를 하나 만든다 . 그리고 그 내용에 phpinfo() 라는 함수를

하나 넣고 실행한다. 그럼 아래와 같은 내용들이 출력 될것이다.

<?php

 

    phpinfo();

 

?>

(2) xdebug wizard 를 통해 VC 버전 확인

 

phpinfo PHP 정보를 출력한후 그 html 정보를 다음 주소 에디터 창에 집어넣는다.

http://xdebug.org/wizard.php

그리고 아래에 Analyse my phpinfo() output 버튼을 클릭해서 주요정보를 추출한다.

결과 페이지가 나오고 아래 그림과 같이 html 에서 추출한 주요정보 리스트가 표현된다.

여기서 주의깊게 봐야될것은 VC6 Thread Safe Build Yea 인지 NO 인지 확인해야한다.

 

(3) phpinfo 에서 확인한 정보에 해당하는 DLL 다운 받기

 

이제 DLL 다운로드 페이지로 간다. http://xdebug.org/download.php

다운로드 페이지에서 우선 VC6 버전을 선택한다. 그리고 PHP 버전이 5.2.12 이므로

PHP 5.2 를 선택한다. 두가지 옵션으로 선택하게 되면 두가지 종류가 나오는데

PHP 5.2 VC6 PHP 5.2 VC6 TS 가 있다. 이 구분의 차이는 위에서 Thread Safe Build

Yes 이면 TS 버전을 받고 아니면 없는것을 받는다.

PHP 정보로 선택한 파일은 아래 그림에서 선택한 것이 되게 된다.

 

2. APM 설치

 

(1) 다운받은 DLL 설치

 

다운받은 xdebug DLL 파일을 APM 폴더로 가서 PHP > ext 인 확장 DLL 폴더에

복사해서 넣는다.

 

(2) PHP.ini 환경정보 변경

 

C:\APM_Setup\php.ini 환경설정 페이지를 열어 Zend Debug 관련정보는 주석처리하고

xDebug 관련 정보를 복사해서 넣는다.

 

[Zend]

;zend_extension_manager.optimizer_ts="C:/APM_Setup/Server/ZendOptimizer/lib/Optimizer-3.3.0"

;zend_extension_ts="C:/APM_Setup/Server/ZendOptimizer/lib/ZendExtensionManager.dll"

;zend_extension="C:/APM_Setup/Server/ZendOptimizer/lib/ZendDebugger.dll"

;zend_debugger.allow_hosts=127.0.0.1

;zend_debugger.expose_remotely=allowed_hosts

 

[XDebug]

; xdebug 파일의 주소. PHP 버전의 Thread Safe가 아니면 "zend_extension = 파일위치" 로 작성

zend_extension_ts="C:/APM_Setup/Server/PHP5/ext/php_xdebug-2.1.1-5.2-vc6.dll"

xdebug.remote_enable=true

xdebug.remote_host=127.0.0.1

xdebug.remote_port=9000

xdebug.remote_handler=dbgp

 

주의해야할 것은 zend_extension_ts 인데 DLL 다운 받을때 Thread Safe Build Yes 이면

 _ts 를 붙이고 No 이면 _ts 를 뺀 zend_extension 만 변수명으로 쓴다.

 

3. Eclipse 환경 설정

 

Eclipse 에서 설정을 하기위한 기본 조건은 PDT 를 다운받아 설치해야한다.

windows > Preferences 로 가서 PHP 부분을 클릭한다.

 

(1) PHP Servers 에서 서버 추가

 

New 를 클릭해 추가 wizard 화면을 띄운다.

 

Name : 적당한 이름을 넣는다

Base URL : 사이트 주소를 넣는다.

Local Web Root : 소스가 있는 위치를 가르킨다.

 

(2) PHP Executables 추가

 

Add wizard 화면을 띄운다. 여기선 PHP 서버를 연결 시키기 위한 정보이다.

현재 APM 에서 설정되어있는 PHP 서버를 선택해야한다. Debug 를 누르게 되면

PHP 스레드에 연결이 되기 때문이다.

 

Name :  적당한 이름을 넣는다.

Executable path : php.exe 를 찾아서 넣는다

PHP ini file : PHP 환경설정 파일인 php.ini 파일을 넣는다

SAPI Type : CLI 로 선택한다.

PHP debugger : xDebug 를 선택한다

 

(3) Debug 에서 xDebug 선택

 

Debug 를 선택하게 되면 설정화면이 나오게 되는데 2번에서 생성한 PHP Executable

선택하기 위한 것이다.

PHP Debugger 란에서 xDebug 를 선택하게 되면 PHP Executable 2번에서 생성한

내용이 뜨게 된다. 하나만 생성했으므로 기본으로 선택이 되어있을 것이다.

그리고 아래에 Enable CLI Debug 를 체크한다. 이부분은 Executable 추가할때 SAPI Type

CLI 로 했기때문에 체크를 해야한다.

다음은 Break at First Line 인데 이것은 체크 해제 한다. 해제 하지 않으면 디버그 시에

첫페이지 첫라인부터 디버그를 시작하기 때문에 비 효율적이다.

 

4. 실행을 위한 Debug Configurations  설정

 

이제 Debug 를 위한 실행 포인트를 만들어야 한다. Debug Configurations 에 들어가 보면

두가지가 있다 PHP CLI Application PHP Web Application 이 그것이다.

 

(1) PHP CLI Application

 

단위 페이지 실행이 가능하다. PHP File 란에 실행해주고 싶은 페이지를 링크시키고

페이지에 Break point 를 걸면 된다. PHP 기능의 단위테스트를 위해 응용하면 좋을듯 하다

 

(2) PHP Web Application

 

이것은 서버 전체를 Debug 할수 있다. 실행하게 되면 현재 떠있는 PHP 프로세스와

연결이 되어 디버깅이 되는 것이다.

PHP Web Application 부분을 클릭해서 화면을 추가한다. Server 탭만 설정을 하면된다.

 

File : 사이트 메인 페이지를 링크한다

URL : 기본적으로 Auto Generate 가 체크 되어있기 때문에 File 에서 메인 페이지를

링크하게 되면 실행 주소가 http://localhost/xe/index.php 가 되게 된다.

만약 Context 명이 xe 로 설정이 되어있으면 상관없지만 root 로 실행되게 되면

xe 를 빼야한다. Auto Generate 체크를 풀게 되면 Edit 창이 활성화 되어서

수정할수 있게 되므로 고친다.

이부분을 수정하지 않으면 Debug 가 되지 않으므로 주의한다.

 

5. Debug 확인

 

이제 Debug 가 제대로 되는지 확인해볼 차례이다. 4번에서 설정한 debug 를 실행해본다

실행하게 되면 화면처럼 Internal Web Browser 창에 첫화면이 떠야한다.

57 % 에서 프로그레시브바가 멈춰서 화면이 안뜬다면 다음과 같은 체크항목을 다시 검토해 본다.

 

 

Posted by 녹두장군