xe 디버깅하기

김재동 • August 14, 2012

xpressengine

사용자 설정 파일 config/config.user.inc.php 를 작성해 놓으면 config/config.inc.php 파일의 설정보다 우선해서 적용되어 디버깅이 가능하다.

config.user.inc.php 예시

define('__DEBUG__', 1);
define('__DEBUG_OUTPUT__', 0);
define('__DEBUG_PROTECT__', 1);
define('__DEBUG_PROTECT_IP__', '127.0.0.1');
define('__DEBUG_DB_OUTPUT__', 0);
define('__LOG_SLOW_QUERY__', 0);
define('__OB_GZHANDLER_ENABLE__', 1);
define('__ENABLE_PHPUNIT_TEST__', 0);

config.user.inc.php 설정

__DEBUG__

기본값은 0 으로, 이것은 디버깅 메시지 출력을 할 것인지, 어떤 것을 할 것인지를 설정하는 지시자이다.

이 지시자의 설정값은 비트 OR 연산으로 값을 설정한다. 예를 들어, 모든 설정을 활성시키고자 한다면 7로 설정하면 된다.

__DEBUG_OUTPUT__

기본값은 0 으로, 이것은 디버그 메시지의 출력 방법에 대해 설정하는 지시자이다.

0 : files/_debug_message.php 에 연결하여 출력 1 : HTML 최하단에 주석으로 출력 (Response Method가 HTML 일 때) 2 : Firebug 콘솔에 출력

__DEBUG_PROTECT__

기본값은 1 이고 디버깅 메시지를 특정 IP 주소에서만 보여줄 것인지 모든 아이피에서 볼 수 있게 할 것인지를 설정한다.

가급적 1 로 설정하는 것이 좋을 것이다. 그렇지 않은 경우 이로 인해 발생할 수도 있는 문제는 심각해질 수도 있다.

__DEBUG_PROTECT_IP__

기본값은 127.0.0.1 이고, 이 지시자는 __DEBUG_PROTECT__ 지시자의 값을 1로 설정했을 때 디버그 메시지 출력을 허용할 IP 주소를 설정하는 것이다. 여기에는 자신의 IP 주소를 설정해주면 된다.

디버깅 메시지 출력

소스코드에 다음과 같이 debugPrint함수를 추가하면 된다.

debugPrint("Hi, there!!");
debugPrint("document_srl is : ".$document_srl);

추천 디버깅 방법

FirePHP 등은 속도가 느리므로 사용을 추천하지 않는다. 디버깅 결과를 파일로 저장하도록 __DEBUG_OUTPUT__을 0으로 설정하고 터미널에서 tail -f files/_debug_message.php 명령어를 실행하거나 소스코드에 return new Object(-1, "message"); 를 추가한다. 단, 이 방법은 게시물이나 댓글을 작성하는 시점(Context::get('act')=='procBoardInsertDocument' && $called_position == 'before_module_proc') 등에서는 표시되지 않는다.

참고자료