PHP Profiler - Xdebug
- Posted at 2007/05/13 16:54
- Filed under 개발
안녕하세요 개발팀의 이창명입니다.
오늘은 php profiler에 대한 툴 소개를 할 까 합니다.
< Tool >
1.APD (Advanced PHP debugger)
- 다운로드 페이지: http://pecl.php.net/package/apd
- 불 필요한 부하가 적다.
- 인터랙티브 디버깅
- 이벤트 기반 로깅
- 엔진 레벨 디버깅
-설치방법 : -pear install apd
- apd_set_pprof_trace();를 스크립트 시작 부분에 추가한다.
-로그 파일 :apd.dumpdir/pprof_pid.ext
-분석 툴 : pprofp
2.XDEBUG
- 다운로드 페이지: http://xdebug.org
- GUI :Kcachegrind / KDE
3. 기타
- Zend IDE
- mod_log_config
저는 이 중에서 XDEBUG를 사용하고 있습니다.
Kcachegrind의 화려한 면모 때문이기도 하지만 함수 실행 비용을 표시해 주고 디테일한 부분까지도 보여주기 때문에 좀더 효율적이고 빠른 디버깅을 할 수 있습니다.
특히 cakephp가 call하는 함수에 대한 순서와 비용에 대해 그래프로 볼 수 있다는 것이 저에게는 흥미로웠습니다.
windows OS 에서는 Wincachegrind를 이용하여 프로파일 분석을 할 수 있습니다.
다만 Kcachegrind 보다 디테일 하지 못하다는 단점이 있지만 기본적인 분석 툴의 기능은 갖추고 있습니다.
xdebug는 기본적으로 yum 또는 apt 패키지로 제공되고 있으니 설치법에 대해선 적지 않겠습니다. ^^
php.ini 세팅은 다음과 같이 해주시면 됩니다. 여기서 로그파일 기록 디렉토리는 임의로 세팅해 주시면 되겠습니다.
[Xdebug]
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = /tmp
자 그럼 간단한 디버깅을 통해 브라우져에서 어떡해 표시되는지 볼까요?

그밖에 Xdebug 펑션을 스크립트 내에서 활용할 수 있습니다.
자세한 레퍼런스는http://xdebug.org/docs-functions.php 에서 보실 수 있습니다.
예)


Kcachegrind 다운로드 페이지 http://kcachegrind.sourceforge.net
아래 그림은 cakephp 상에서 session.php 에 대한 frofile 입니다.
해당 펑션을 더블클릭하면 더 자세한 부분까지도 볼 수 있습니다.
session.php)

아래 그림은 cakephp의 route.php 가 실행되는 순서입니다.
route.php)

또한 해당 소스에서 부하가 많이 걸리는 코드도 선별해 준 답니다.
이처럼 Kcachegrind 는 디버그 용도 뿐만 아니라 최적화를 위해서도 사용될 수 있으니 개발자에게 매력적인 툴인 것만은 확실하겠죠?^^
Kcachegrind을 써보신다면 좋은 점을 아주 많이 발견하실 수 있습니다.
지금까지 저는 고슴도치 플러스 개발팀의 이창명 이었습니다.
Posted by 공장장
- Response
- No Trackback , 4 Comments
Trackback URL : http://hedgeplus.net/trackback/76
Comments List
-
좋은 정보 감사합니다 ^^;
-
잘 보고 갑니다... *^^*
-
안녕하세요 ^^ 답변이 늦어서 죄송합니다.
제가 리눅스를 잘알지는 못하기 때문에 아주 짧은 저의 경험에서 말씀을 드리겠습니다.
더 자세한 사항을 알고 싶으시면 idtail@ahnlab.com로 문의해 주십시요. ^^
일단 저의 리눅스 배포본은 fedora core 7이며 주 개발 툴은 eclipse fedora version 2를 쓰고 있습니다. 저희 서비스 개발 언어는 php 5.x이고 framework은 cakephp 를 쓰고 있고 제 로컬 머신에는 xdebug와 Kcachegrind 조합을 디버그 툴로 쓰고 있습니다. 다른건 google 에서 검색하시면 다 찾으실 수 있는 것들이고 특별히 cakephp 의 한글화 문서는 http://cakephp.co.kr/ 에서
확인하실 수 있습니다.





