|
컴파일 옵션에 codeguard 옵션 켜서 컴파일하시고 에러나오거나
경고나오는 부분을 살펴보세요 그래도 안되면 내부 메모리나 사용이 줄거나
다른분 얘기대로 memlock이나 mem 명령중 다른 영역 침범이 없는지 보세요
장성호 님이 쓰신 글 :
: Debuging을 위해서 Log를 남기는 방법을 권해 드립니다.
:
: Application에 Application->OnException이벤트를 걸수 있습니다.
:
: 이벤트를 걸오놓으면 try-catch로 잡지 않은 거의 모든 에러는 이쪽으로 오게됩니다.
:
: 저는 주로 Application->OnException 이벤트에서 텍스트 파일로
:
: 시간 , Sender class name , error message 등의 로그를 날짜별로 남깁니다.
:
: 나중에 알수없는 문제가 발생했을때 이 파일을 뒤적거려보는거죠
:
: try-catch로 에러를 잡았다 하더라도 잡은 에러를 다시 throw하시면
:
: Application->OnException로 이벤트가 발생합니다.
:
:
: 문론 Application->OnException 이 발생하지 않고 프로그램이 확 죽어버리는 경우도 있습니다만
:
: 위와 같은 방법으로 상당히 추적이 가능합니다.
:
: 그리고 또 으심가는 부분에서 메세지를 만들어서 throw하여 로그를 남기는 방법도 있습니다.
:
:
:
: //----------샘플---------------------------------
:
:
: void __fastcall TDLG_CDMA::FormCreate(TObject *Sender)
: {
:
: Application->OnException=AppException;
: }
:
: //---------------------------------------------------------------------------
: void __fastcall TDLG_CDMA::AppException(TObject *Sender, Exception *E)
: {
: String as="Err:"+Now().FormatString("yy-mm-dd hh:nn:ss")
: +":Sender;"+Sender->ClassName() +":Msg;"+E->Message+"\r\n";
: String LogFile=Now().FormatString("yymmdd")+".Log";
: MakeFile((sDataPath+LogFile).c_str(),as.c_str(), as.Length(), OPEN_ALWAYS);
: }
: //---------------------------------------------------------------------------
:
: //MakeFile을 제가 만들어서 쓰는 함수입니다.
:
: //---------------------------------------------------------------------------
: void __fastcall TDLG_CDMA::TempFunc()
: {
: try
: {
: .......
: .......
: return ;
: }
: catch(Exception &err)
: {
: String errmsg="TempFunc() "+err.Message;
: throw(errmsg);
: }
: }
:
:
: 하안인 님이 쓰신 글 :
: : 프로그램이 하루나 이틀에 한번씩 아무런 메시지없이 종료가 됩니다.
: :
: : 프로그램이 24시간 가동되는 프로그램인데요 .
: :
: : 프로그램에 버그가 있으면 에러메시지라도 나와야 할텐데...
: :
: : 그냥 메시지 없이 종료가 됩니다.
: :
: : 어떻게 확인 해보아야 할까요. 답이 없어서..
: :
: : 도움을 구합니다.
|