2009-08-14 1 views
0

내 질문은 this article을 기반으로합니다.Ubuntu에서 PHP 디버깅에 Xdebug2의 프로파일 링 데이터를 사용하려면

Xdubug2를 사용하여 PHP 코드에 대한 프로파일 링 데이터를 만든 다음 KCacheGrind와 같은 응용 프로그램에 어떻게 넣을 수 있습니까?

우분투에서 Xdebug를 성공적으로 사용했습니다. 브라우저에서 내 오류 메시지를 강조 표시했기 때문입니다. 그러나, xdebug 같은 터미널 도구를 찾지 못했습니다.

내가 WebGrind를 살펴 보자이

alt text

+1

에서 그들에 대해 읽을 수 있습니다,이 프로파일 생성을 호출하는 다른 방법이 있습니다. 도움이 될만한 그림을 다시 게시 할 수 있다면. –

+0

나는 참조 된 기사의 저자입니다. 이미지가 내 서버에 핫 링크되어 있으며 허용하도록 아파치를 구성했습니다. 그래서 hotlinking이 용인되고 심지어 권장되는 imgur.com에 이미지를 업로드했습니다. – pilif

답변

4

그렇지 않으면 conf의 변화가 포착되지 않고,

xdebug.profiler_enable = 1

그리고 php.ini 파일에이 줄을 추가 쪽으로.

PHP를 cli를 통해 실행중인 경우 물론 다시 시작하지 않아도됩니다.

이제 PHP 스크립트를 실행하면 xdebug.profiler_output_dir php.ini 설정에 지정된 디렉토리에 cachegrind.out.PID 파일이 만들어집니다. 기본적으로/tmp입니다.

그 파일은 kcachegrind가로드 할 수있는 파일입니다.

는 사진을 통해 전송받을 것 같지 않았다 당신은 http://www.xdebug.org/docs/all_settings#profiler_enable

1

내가 전용 액세스를 가지고 비슷한 상황에 달렸다 테스트 할 시각적 환경이 아닌 터미널에 연결해야합니다. 더 나쁜 것은, 나는 창문 기계와 퍼티를 사용하고 있었다. 사용할 수

솔루션은 WebGrind (http://code.google.com/p/webgrind/)

  • Xdebug는 실행하고 당신이 cachegrind 뷰어가 기계 위에 cachegrind.out 파일을 복사 설치

    1. 있습니다.

    나를 위해 대답은 내 로컬 Windows 컴퓨터에 cachegrind 파일을 SCP하고 WinCachegrind를 사용하여 보았습니다. 당신은 그들을 당신의 리눅스 상자에 SCP 수 있고 파일에 KCacheGrind를 실행합니다. 단점은 동일한 파일 구조가 아니 어서 소스 코드를 볼 수 없다는 것입니다. 로컬 컴퓨터에도 소스가 있거나이 소스를 가져올 수 있으면이 문제도 해결할 수 있습니다. vim (또는 다른 편집기)에서 cachegrind 파일을 열고 전역 검색을 수행하고 경로를 바꾸어 로컬 시스템의 올바른 소스 경로로 변경하십시오.

    이번이 검색 되었기를 바랍니다. 주소 코멘트에

    편집 :

    는 다소 차이가있는 callgrind 파일을 얻을 작업하는 경우. 이를 위해서는 Linux로 실행하고 있어야하며 callgrind 및 valgrind 프로그램을 사용할 수 있어야합니다. 여기서 가정 할 마지막 사항은 PHP를 Apache mod로 실행하고 다른 방식으로는 실행하지 않는다는 것입니다. callgrind 도구를 사용하여 apache를 시작한 다음 브라우저에서 요청을 실행하십시오. 이것은 PHP 호출 트리뿐만 아니라 문제를 일으킬 수있는 Apache의 많은 것들에 대한 자세한 정보를 제공합니다. 여기

    는 -X는 하나 개의 스레드 디버그 모드에서 아파치를 시작합니다

    sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X 
    

    의 예입니다. 여기에서 웹 브라우저를 열고 원하는 PHP 스크립트를 누르십시오. 그런 다음 돌아가서 apache를 종료하십시오. 이것은 또한 callgrind 구문 분석을 끝내야합니다.

    당신이 아파치 또는 웹 브라우저가 필요하지 않은 경우, 당신은 단지 PHP를 명령하면 동일한 결과를 제공한다

    sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php 
    

    으로하지만, 모든 아파치 물건없이 callgrind을 실행 시도 할 수 있습니다.당신이 웹 서버를 다시 시작해야 할 웹 서버를 통해 PHP를 실행하는 일이면

  • +0

    WebGrind가 작동합니다. PHP는 컴파일 할 필요가없는 언어입니다. ** 당신이'gcc -pg'를 사용할 수 없을 때 PHP 스크립트의 callgrind.out 파일을 만들 수있는 방법은 무엇입니까? ** –

    +1

    다른 것인데 캐시 글린드가 아닌 콜그 그리드를 얻으 려한다면? 의견 수정. –

    +1

    Masi, Callgrind는 valgrind 옵션입니다. 혼란을 드려 죄송합니다. 내가 가지고있는 기계에서, callgrind 설치는 "callgrind"를 "valgrind --tool = callgrind"의 별명 인 명령으로 사용할 수있게 만들었습니다.이 sudo valgrind를 시도하십시오 --tool = callgrind --dump-instr = yes --trace -jump = yes -v/usr/sbin/php my_php_script.php –