Background Image
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
서버 쪽에서 복잡한 과정을 거쳐 작업이 이루어 지거나
(DB를 호출하는 로직등등)

또는, 여러가지 오류검사나 정합성 검증이 필요한 경우에는
대부분 별도로 오류 처리하는 함수를 두게 된다.

그런데 이 함수를 호출하는 곳이 여러 군데 라면
어떤 값을 거쳐서 이 오류상황에 도달하게 되었는지가 프로그램을 고치는데,
또는 상황을 파악해서 문제를 해결하는데 중요한 정보가 된다.

이런 경우 var_dump와 debug_backtrace 또는 debug_print_backtrace함수를 적절히 활용하면
훌륭한 디버깅 환경을 갖출 수 있다.

다음은 그 샘플 코드로 backtrace()는 php.net에 올라와 있는 코드이고
ana_failmail은 backtrace()를 활용하여 오류가 발생한 경우 담당자에게
메일을 발송하도록 한것이다.
($failmail_sender, $failmail_receiver만 미리 설정해 두면된다)



    function backtrace()
    {
        $output = "<div style=''''text-align: left;''''>\n";
        $output .= "<b>Backtrace:</b><br />\n";
        $backtrace = debug_backtrace();
    
        foreach ($backtrace as $bt) {
            $args = '''''''';
            foreach ($bt[''''args''''] as $a) {
                if (!empty($args)) {
                    $args .= '''', '''';
                }
                switch (gettype($a)) {
                case ''''integer'''':
                case ''''double'''':
                    $args .= $a;
                    break;
                case ''''string'''':
                    $a = htmlspecialchars(substr($a, 0, 64)).((strlen($a) > 64) ? ''''...'''' : '''''''');
                    $args .= "\"$a\"";
                    break;
                case ''''array'''':
                    $args .= ''''Array(''''.count($a).'''')'''';
                    break;
                case ''''object'''':
                    $args .= ''''Object(''''.get_class($a).'''')'''';
                    break;
                case ''''resource'''':
                    $args .= ''''Resource(''''.strstr($a, ''''#'''').'''')'''';
                    break;
                case ''''boolean'''':
                    $args .= $a ? ''''True'''' : ''''False'''';
                    break;
                case ''''NULL'''':
                    $args .= ''''Null'''';
                    break;
                default:
                    $args .= ''''Unknown'''';
                }
            }
            $output .= "<br />\n";
            $output .= "<b>file:</b> {$bt[''''line'''']} - {$bt[''''file'''']}<br />\n";
            $output .= "<b>call:</b> {$bt[''''class'''']}{$bt[''''type'''']}{$bt[''''function'''']}($args)<br />\n";
        }
        $output .= "</div>\n";
        return $output;
    }
    
    function ana_failmail($msg)
    {
      global $PHP_SELF, $failmail_sender, $failmail_receiver;
      
      $title = "process fail($PHP_SELF)";
    
      echo "$msg<br>\n";
      ini_set("SMTP","메일서버 이름이나 주소를입력"); // 메일 서버가 설정되어 있다면 필요 없음
      $mheader="MIME-Version: 1.0\r\nContent-type: text/html;\r\nFrom: $failmail_sender\r\n";

      if (mail($failmail_receiver, $title, $msg."<br>\n".backtrace(), $mheader))
        echo "메일 전송 성공";
      else      
        echo "메일 전송 실패";
    }



  1. ITrack SW 다운로드

  2. No Image 25Oct
    by 장현정
    2007/10/25 by 장현정
    Views 15470 

    Linux에서 Cubrid 자동 부팅하기

  3. No Image 07Sep
    by 관리자
    2006/09/07 by 관리자
    Views 14511 

    ITrack 설명서

  4. ITrack 모범 사용(best practice) 문서

  5. No Image 26Feb
    by 한마루
    2007/02/26 by 한마루
    Views 1560623 

    큐브리드용 그누보드(GNUBOARD)4 공개

  6. No Image 06Sep
    by 관리자
    2006/09/06 by 관리자
    Views 17886 

    ITrack (Issue Tracking System) 이란?

  7. ITrack KLDP에 공개SW 프로젝트로 등록

  8. 큐브리드용 제로보드 및 데이터 마이그레이션 툴

  9. No Image 17Jan
    by 관리자
    2007/01/17 by 관리자
    Views 26812 

    소프트웨어 개발 프로세스 자료들...

  10. No Image 12Feb
    by 김평철
    2007/02/12 by 김평철
    Views 17389 

    JCO 8차 컨퍼런스 발표 자료 (개발프로세스)

  11. No Image 13Apr
    by 정병주
    2007/04/13 by 정병주
    Views 18546 

    사이냅소프트(Synapsoft) 개발체계

  12. 큐브리드 7.0 : cci c 파일 델파이 포팅자료 - 베타1

  13. No Image 19Jun
    by 서상욱
    2007/06/19 by 서상욱
    Views 20123 

    PHP로 DB작업 디버깅하기(오류시 담당자에 디버깅 정보 보내기)

  14. 큐브리드용 그누보드 4.21.0

  15. No Image 28Jun
    by 남재우
    2007/06/28 by 남재우
    Views 20159 

    게임개발자들을 위한 CUBRID C-API 관련 자료 및 sample code

  16. No Image 25Jul
    by 강사
    2007/07/25 by 강사
    Views 18109 

    교육 예제입니다.

  17. php로 큐브리드 프로시저 사용하기

  18. No Image 13Oct
    by 궁금이
    2007/10/13 by 궁금이
    Views 19236 

    loadjava GUI Tool 공유

  19. No Image 18Oct
    by 야라바
    2007/10/18 by 야라바
    Views 18976 

    phpCubAdmin 1.0.1 입니다.

  20. [util] procedure 등록 유틸리티

Board Pagination Prev 1 2 3 4 Next
/ 4

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales