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
우리의 꿈은, 뒤에 오는 사람들이 우리를 딛고 우리 위에서 이루게 하는 것입니다. 나는 평생을 창조적인 작업을 위해서 살아왔습니다. 누가 하라고 해서 한 것이 아니라 그것이 나의 삶 그 자체의 즐거움이었기 때문입니다. 현실을 직시하며 현재의 수준을 유지하라. 그리고 더 먼 곳을 향하는 시야를 가져라.