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 정보를 다음 주소 에디터 창에 집어넣는다.
그리고 아래에 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 % 에서 프로그레시브바가 멈춰서 화면이 안뜬다면 다음과 같은 체크항목을 다시 검토해 본다.
'기타 언어 > PHP' 카테고리의 다른 글
AutoSet 매니저 “MySQL 서버가 NT 서비스에 등록되어 있지 않습니다. “ 에러 해결 (0) | 2018.06.06 |
---|---|
윈도우 아파치 Apache 웹 서버 설치해서 실행하는 방법 (0) | 2018.01.07 |
[PHP] 개발을 위한 이클립스 통합개발환경(IDE) 꾸미지 (0) | 2014.10.09 |
PHP 콘솔창에 FirePHP 를 이용한 디버깅 (0) | 2014.01.20 |
XE 에서 PHP 로그 내용을 출력하기 위한 FirePHP, FireBug 와 연동하여 출력하기 (0) | 2012.11.08 |
PHP 를 이용한 Oracle DB 접속과 활용 (0) | 2012.10.18 |
PHP 에서 메타 문자를 이용해 정규표현식 구현하기 (0) | 2012.10.13 |
APMSETUP 에서 MySql DB 접속후 테이블 만들기 (1) | 2012.10.10 |