|
EurekaLog인가 하는 상용 플러그인이 있는데 그걸로 가능할거 같습니다만...
강재호.만해 님이 쓰신 글 :
: 예외가 발생시 처리 하는 부분인데요
:
: 다음과 같습니다.
:
: Application->OnException = ExceptionFilter;
:
: void __fastcall Tfrm_Main::ExceptionFilter(TObject *Sender, Exception *ExceptionCode)
: {
: AnsiString a_Msg;
: TStringList* ErrMsg = new TStringList;
: ErrMsg->Text = ExceptionCode->Message;
: a_Msg = "Exception Class = " + Sender->ClassName();
: a_Msg += ENTER;
: a_Msg += AnsiReplaceStr(ExceptionCode->Message, ::CR, ENTER);
:
: ExceptionLogs(Sender->ClassName(), a_Msg);
: delete ErrMsg;
: return;
: }
:
: 이런식으로 되어 있는데요
:
: 가끔씩 보면
:
: TcxCustomInnerTextEdit
: Exception Class = TcxCustomInnerTextEdit
: 'U0088' is not a valid integer value
:
: TArtPanel
: Exception Class = TArtPanel
: '' is not a valid integer value
:
: TServerClientWinSocket
: Exception Class = TServerClientWinSocket
: Access violation at address 008EA4BD in module 'ezClick.exe'. Read of address 00000018
:
: TServerClientWinSocket
: Exception Class = TServerClientWinSocket
: List index out of bounds (3)
:
: 이런식으로 예외가 발생하는 부분에 대한 정보가 나오는데요
:
: TServerClientWinSocket
: Exception Class = TServerClientWinSocket
: Exception Method=DataOnlyOneCheck
: Exception Context=Query:Select *** From table Execute
: Exception Message=EAccessViolation
:
: DB쪽의 에러는 제가 거의 대부분 전처리를 하기 때문에 이렇게 구분을 시켜서 메타 데이타를 추가 시켜서
:
: 보기 쉽게 되어 있지만,
:
: 그외의 예외들 그러니깐 UnHandled Exception은 저위와 같이 메모리 주소랑 에러 경우만 나오기 때문에
:
: 참 파악 하기가 힘듭니다.
:
: 그리고 프로그램 특성상 필드 테스트는 거의 어렵고요,
:
: 결국은 릴리즈 나간데서 정보를 얻어야 한다는 얘기인데
:
: UnHandled Exception에서 발생하는 정보가 작다 보니 좀 어렵습니다.
:
: 그래서 Unhandled Exception 발생시 다른건 몰라도 이 예외를 발생 시킨 함수를 좀 알수 없을까요?
:
: a -> b -> c -> d -> Exception 발생.
:
: 이렇게 되었을때 제 로그 상으로는 d는 알수 있는데 a,b,c 까지는 알수 없습니다.
:
: a,b,c,d 까지 알수 있는 방법이 없을까요?
:
: 최대 7에서 작게 3개 정도 가지 콜 트레이스를 할수 있으면 좋겠는데
:
: 누가 방법을 아시면 좀 가르켜 주세요~
|