RSS

태그 보관물: Xdebug

워드프레스 실행쿼리 보기

워드프레스의 최적화된 소스를 제대로 분석하기란 쉽지 않다. 오픈소스지만 코어 해킹은 하지 않는 관행으로 통상 콘텐츠(테마)만 수정하게된다. 그러나 코어 소스를 파악하지 않은 채 주변(테마) 소스를 수정하려고 하면 여러 궁금증과 함께 답답함이 몰려온다. 특히, 데이터 셋에 어떤 쿼리가 요청되어 메모리가 채워지는지 궁금할 것이다.

프로그램 디버깅을 해본 경험이 있다면 일일이 쿼리를 찍어 보는 일이 상당히 귀찮고 번거롭다는 걸 안다. 하지만 워드프레스에서는 환경설정 파일과 디스플레이용 파일에 몇 줄의 코드만 추가하면 된다.

워드프레스의 환경설정 파일인 wp-config.php을 열어서 다음 한 줄을 추가하자.

define(“SAVEQUERIES”, true);

이 옵션을 활성화하면 데이터베이스 쿼리를 모두 전역변수에 저장해 페이지에 표시해 준다. 워드프레스가 웹 페이지를 생성할 때 호출하는 모든 쿼리를 보여줌으로써 원활한 디버깅을 할 수 있다. 테마나 플러그인 작업을 하는 중에 문제가 생기면 이 옵션을 사용하면 데이터베이스 호출 내역을 정확하게 파악할 수 있다.

자, 다음으로 요청한 쿼리를 출력할 적당한 파일을 찾아서 열어보자. 모든 페이지에 포함되는 footer.php가 괜찮을 것 같다. 아래 코드를 추가하자.

if (current_user_can(‘install_plugins’)) {
global $wpdb;
print_r($wpdb->;queries);
}

웹 페이지를 열어 디버깅 결과를 확인해보자.

define("SAVEQUERIES", true);

[define(“SAVEQUERIES”, true); 설정]

이 코드는 모두에게 열려있지는 않다. 단지 사이트 관리자가 로그인한 경우에만 출력된다. 디버깅이 끝나면 설정을 비활성화 해주는 걸 잊어선 안 된다. 불필요한 데이터가 보이기도 하지만, 해커에게 중요한 정보가 노출될 수 있기 때문이다.

define(“SAVEQUERIES”, false); /* 쿼리 디버깅 비활성화 */

쿼리 이외에 좀 더 자세한 사항들을 디버깅하고 싶다면, 즉 중단점을 걸어 더 상세하게 들춰보고 싶다면 Xdebug를 이용해야 한다. 이전에 올린 이클립스디버깅을 참고하기 바란다.

 
 

태그: , , ,

워드프레스 디버깅-Xdebug 설치

눈 깜짝할 사이에 벌어지는 놀라운 마술쇼를 볼 때면, 마술사의 손과 발을 멈춰서 비밀을 캐보고 싶을 때가 있다. 마술사의 모자도 뒤집고 소맷귀도 뒤져보고 검은색 양복 안주머니도 들여다보는 식으로 말이다.

현실에서는 이렇게 할 수 없지만, 프로그래밍의 세계에서는 충분히 가능하다. 바로 직관적인 디버깅을 통해서다. Xdebug와 Eclipse가 그해답이다.

Xdebug를 내려받아 설치하고 환경설정을 해보자.

php 디버깅 도구로 Xdebug를 이용한다. 다운로드는 아래 사이트에서 받는다.

http://xdebug.org/download.php

다양한 버전이 올라와 있는데 설치된 환경에 맞게 받으면 된다. Xdebug 2.1.2버전의 PHP 5.2. VB6 TS (32 bit)를 선택한다.

바이너리명에 TS라고 붙은 건 Thread Safe이다.
Xdebug 다운로드

php가 설치된 폴더에 복사해주면 Xdebug설치가 끝난다.

– 위치 : C:\APM_Setup\Server\PHP5\ext\

Xdebug설치

php에 디버그 등록을 해준다. php.ini를 열어 편집하자.

– 위치 : C:\APM_Setup\php.ini

php.ini기본 설정된 Zend 디버그는 주석 처리하고 Xdebug를 다음과 같이 설정한다.

Xdebug setting

zend_extension_ts에 이전에 복사한 Xdebug파일명을 등록해주어야 한다.

자, Xdebug 환경설정이 모두 끝났다. 아파치 서버를 재시작하고 제대로 적용되었는지 확인해 보자.

phpinfo()가 포함된 php파일을 하나 만들고 웹 브라우저에 띄워보자.

phpinfo()

Xdebug관련 항목이 나오면 정상이다.

 
 

태그: , , ,