에러처리 및 디버그 유틸리티

본 장에서는 에러처리 및 디버그와 관련된 유틸리티에 해당하는 API를 설명한다.

1. PFM_ERR

해당 서버의 로그 파일에 에러 정보를 출력한다.

  • 프로토타입

    void PFM_ERR(char *format, …);
  • 파라미터

    파라미터명 설명

    *format

    출력 포맷

    가변 인자로 입력 유무를 선택할 수 있는 값

  • 예제

    PFM_ERR(“ERROR MESSAGE=%s”, pfmStrGetErrorMsg());

2. PFM_DBG

해당 서버의 로그 파일에 디버깅 정보를 출력한다.

  • 프로토타입

    void PFM_DBG(char *format, …);
  • 파라미터

    파라미터명 설명

    *format

    출력 포맷

    가변 인자로 입력 유무를 선택할 수 있는 값

  • 예제

    Long a = 123;
    PFM_DBG(“a=%ld”, a);

3. PFM_TRY

함수가 호출되기 전과 후에 해당 함수를 추적(trace) 로그로 출력한다. 해당 함수를 호출하는 중에 에러가 발생하면 PFM_CATCH Label로 이동한다.

  • 프로토타입

    void PFM_TRY(rc);
  • 파라미터

    파라미터명 설명

    rc

    추적(trace)할 함수명

  • 예제

    char   str[]  =  “2315”;
    long   num, rc;
    PFM_TRY( pfmStrToLong(&num, str) );
    
    return RC_NRM;
    
    PFM_CATCH:
    PFM_ERR(”Error!!”);
    return rc;

4. PFM_TRYNJ

함수가 호출되기 전과 후에 해당 함수를 추적(trace) 로그로 출력한다. PFM_TRY와는 다르게 해당 함수를 호출하는 중에 에러가 발생하면 PFM_CATCH Label로 이동하지 않는다.

  • 프로토타입

    void PFM_TRYNJ(rc);
  • 파라미터

    파라미터명 설명

    rc

    추적(trace)할 함수명

  • 예제

    char   str[]  =  “2315”;
    long   num, rc;
    
    PFM_TRYNJ( pfmStrToLong(&num, str) );
    If ( rc != RC_NRM )
    {
    PFM_ERR(”Error!!”);
        return rc;
    }
    
    return RC_NRM;

5. PFM_HEXDUMP

버퍼의 내용을 Hexa 코드로 로그에 출력한다.

  • 프로토타입

    Void PFM_HEXDUMP(void *in_data, long in_len);
  • 파라미터

    파라미터명 설명

    *in_data

    버퍼의 포인터

    in_len

    버퍼의 크기

  • 예제

    char buf[128] = “abcdefg”;
    long len = strlen(buf);
    
    PFM_HEXDUMP( buf, len );

6. pfmUtilGetErrorMsg

Date, Number, String 유틸리티 사용하는 중 에러가 발생하면 에러 메시지를 출력한다.

  • 프로토타입

    char * pfmUtilGetErrorMsg(void);
  • 예제

    rc = pfmStrSosiToKsc(dest2, 100, dest, strlen(dest));
    if(rc != RC_NRM) {
       PFM_ERR(“%s”, pfmUtilGetErrorMsg());
       return RC_ERR;
    }