2014-05-21 3 views
0

다른 사람의 코드를 사용하여 시간을 절약하는 것이 좋습니다. 그리고 나는 다른 개발자로부터 상속받은 스크립트뿐만 아니라 스크립트를 효과적으로 디버깅하기를 원합니다.debug_backtrace를 사용하여 PHP 코드 디버그

나는 debug_backtrace()을 읽었으며, 내가 찾고있는 것인지 확실하지 않습니다.

기본적으로 클래스가 인스턴스화 될 때 어떤 메소드가 실행되는지 알고 싶습니다. 진실하게, 나는 가능한 한 많이 알고 싶다. 그러나 한 반에서 무슨 일이 일어나는지 아는 것은 환상적이다. 난 그냥 도달 한 방식을 볼 수, 일체의 모든 클래스 내의 각 방법/기능 내부 debug_backtrace() 함수를 배치해야처럼 debug_backtrace에 대한 PHP의 문서에서

<?php 
require('aHugeComplicatedClass.php'); // sooooo many methods 

try { 

    $obj = new aHugeComplicatedClass($params); 

} 
catch(Exception $ex){ 

    var_dump($ex); 

} 

?> 

, 그것은 보인다.

나는 이것을 너무 리터럴로 읽어야한다. 그것은 엄청난 수정 일 것입니다.

그래서 PHP 파일이 있으면 클래스를 인스턴스화하고이 클래스가 다른 클래스에서 확장된다는 것을 알고 있습니다. 가장 간단한 방법은 무엇입니까?

답변

0

XDebug를 설치하고 원격 디버깅을 IDE (예 : PhpStorm 또는 Eclipse)에 연결하면 모든 오류에 대해 좋은 스택 덤프를 얻고 코드를 중단하고 스택 및 모든 객체를 검사 할 수 있습니다 너의 여가 시간에 내부.

http://xdebug.org/

또한 (더 당신이 원하는 무엇처럼 들린다) 코드를 변경하지 않고 응용 프로그램 호출 체인을 프로파일 링하는 데 사용할 수 있습니다. 큰 로그 파일을 생성하는 프로파일 링 옵션을 사용하면 이러한 로그를 webgrind에로드하고 멋진 트리 구조에서 누가 무엇을 호출하는지 눈으로 확인할 수 있습니다.

https://code.google.com/p/webgrind/

젠드의 툴 체인은 상자 밖으로 깊은 디버깅 기능이 종류를 제공 할 것이다.

유사한 코드 프로파일 링을 위해 App Dynamics 또는 New Relic과 같은 Application Performance Monitoring 에이전트를 설치하십시오. 이는 디버깅이 옵션이 아니며 프로파일 링이 비싼 원격 설치 (즉, 프로덕션)에 가장 유용합니다.

0

우리는 이러한 모든 것을 얻으려면 NuSphere PhpED를 사용합니다. 디버거가 지정된 예외 및/또는 오류에서 멈추도록 트리거 할 수 있으며 php 함수 호출, PHP 메소드 호출, 내장 함수 호출 및 포함 된 메소드 호출을 포함 할 수있는 완전한 호출 스택을 보여줍니다.

http://www.nusphere.com/products/phped.htm

는 나는 자신의 디버거가 최고입니다 및이를 확인할 수 있습니다 처음에 들었다. 프로덕션 서버에 코딩, 디버깅, 프로파일 링, 테스트 및 업로드 - 그것은 OSS 프로젝트 PhpED IDE와

http://sourceforge.net/projects/dbg2/

우리는 개발의 전체주기를 실행에서 유래한다.