PHP & Others

debug function

페이지 정보

본문

- debug.inc - 수정 -
function MyErrorHandler($errno, $errstr, $errfile, $errline)
{
      $errname = array(E_ERROR=>'ERROR', E_WARNING=>'WARNING', E_NOTICE=>'NOTICE');

      switch($errno) {
      case E_ERROR:
      case E_WARNING:
      case E_NOTICE:
              echo "<xmp>\\n".$errname[$errno].' : '.$errstr.' : '.$errfile.' : '.$errline."\\n";
              print_r(debug_backtrace());
              exit("\\n</xmp>");
      }
}

if(isset($_DEBUG)) {
      set_error_handler('MyErrorHandler');
}

- 사용예 -
맨 위에
$_DEBUG = true;
include_once 'debug.inc';

- 결과 예 -
Array
(
    [0] => Array
        (
            [file] => ~~~mysql.inc
            [line] => 143
            [function] => MyErrorHandler
        )

    [1] => Array
        (
            [file] => ~~~mysql.inc
            [line] => 143
            [function] => mysql_query
        )
)

이런식으로 인클루드 된 모든파일이 배열로 출력되고 파일마다 몇행에서 멈췄는지 보입니다.
현재는 notice 만 나와도 멈출거라 생각합니다.
리퍼런스에서 set_error_handler 찾으면 쉽게 수정할 수 있습니다.



-----------------------------------------------------------------
알맹이는 이걸로 고쳐야 겠네요.
에러 아닌것들이 걸리는듯.
switch($errno) {
case E_USER_ERROR:
case E_USER_WARNING:
case E_USER_NOTICE:
echo "<xmp>\\n".$errno.' : '.$errstr.' : '.$errfile.' : '.$errline."\\n";
print_r(debug_backtrace());
exit("\\n</xmp>");
}

-----------------------------------------------------------------
E_USER 시리즈는, user_error(); 함수를 콜 할때 필요할것 같습니다.
E_NOTICE 부분이 조금 민감한데.. 프로그램을 주의깊게 코딩하지 않았을 경우 자주 뜨죠.
-----------------------------------------------------------------
http://kr.php.net/manual/en/function.error-reporting.php
아차차...
E_USER시리즈가 그얘기였군요.
case E_ERROR:
case E_WARNING:
case E_NOTICE:
 09/14 20:26:15 
 

PHP 4.3 부터 가능하죠

관련자료

등록된 댓글이 없습니다.
Today's proverb
얼마 전에 ‘어릴 때에는 무엇이 되고 싶었습니까?’ 라는 질문을 받은 적이 있습니다. 저는 진지하게 이렇게 대답했습니다. ‘솔 바스요.’ 건방지게 듣지 마십시오. 저는 정말 진정한 제 자신이 되고 싶었습니다. <솔바스, 미국의 영상 디자이너>