|
감사합니다
CodeGuard 있는줄몰랐네요
한번 사용해봤는데 별의별 다뜨네요
이거로 한번 해보겠습니다
감사합니다.
아제나 님이 쓰신 글 :
: Access Violation은 try {} catch {} 구문에 잡히지 않습니다.
:
: 정상 예외가 아니라 메모리 비정상 사용에 의한 커널 오류라서 그렇습니다.
:
: 가장 간단한 방법은 C++빌더에서 지원해주는 CodeGuard를 enabled 시키고 컴파일해보는 것입니다.
:
: 메모리 비정상 사용과 메모리 누수를 감시해서 알려주니 그것들을 해결하다보면
:
: 자연스럽게 완벽한 프로그램이 됩니다.
:
: CodeGuard 켜는 방법
:
: Project -> Option 에서 찾아보시면 됩니다. (C++빌더 버젼마다 있는 위치가 달라서 =_=)
:
:
:
:
: 알론소 님이 쓰신 글 :
: : 밑에도 올렸지만
: : 아무리해도 해결이 안되서요
: : 도와주세요.ㅠㅠ
: :
: : access violation 이 오류가 뜨는데
: : 함수안에 함수안에 함수안에 try catch 이런문 써서
: : 어느 함수가 문젠지 로그로 남기게해서 했는데
: :
: : 제딴에서는 로그남긴거보고 이함수에서 걸리는구나해서
: : 고쳤는데 또 그러는거에요
: :
: : 그래서 또 찾아봤는데
: :
: : now->second.m_pObject->Init();
: : 여기서 걸리길래
: :
: : now 같은경우 map iterator한거구요
: : m_pObject 는 객체구 Init()여기서 문제구나해서
: :
: : Init()함수로 가서 또 try catch 써서 로그남기게해놨어요
: : 그래서 걸리는 함수가 또 세개나있더라구요
: :
: : 그래서 그함수보니까
: : 거긴 select해서 전역변수에 넣는거거든요 예를들어서
: : 아래소스처럼
: :
: : String strSQL, DataName[STRING_CNT], strMsg, str_info;
: : TStringList *StringList_TFDT;
: : int j = 0;
: :
: : StringList_TFDT = new TStringList;
: : StringList_TFDT->Clear();
: :
: :
: : strSQL.sprintf("SELECT T1.TFDT_STAT FD_01 \
: : FROM VDS_TFDTSTAT T1, VDS_TFDT T2 \
: : WHERE T1.TFDT_ID = T2.TFDT_ID AND T2.VDS_ID = '%s' \
: : ORDER BY T2.TFDT_LANE ASC, T2.TFDT_ID ASC", tcdv_info.tcdv_id);
: :
: :
: : DataName[0] = "FD_01";
: : DataModule_DB->SelectSQL1(StringList_TFDT, strSQL, DataName, 1);
: :
: : try
: : {
: : if ( StringList_TFDT->Count )
: : {
: : for ( int i = 0; i < StringList_TFDT->Count; )
: : {
: : tcdv_stat.tfdt_stat[i].tfdt_stat = StringList_TFDT->Strings[i].ToInt();
: : tcdv_stat.tfdt_stat[i].itfdtstat = 1;
: : i++;
: : } // end of for
: : } // end of if
: : else
: : {
: : for(int i = 0; i < tcdv_stat.tfdt_cnt; i++)
: : {
: : tcdv_stat.tfdt_stat[j].tfdt_stat = 1;
: : tcdv_stat.tfdt_stat[j].itfdtstat = 0;
: : }
: : }
: : }
: : catch( Exception &e)
: : {
: : AnsiString error;
: : error.sprintf("error : %s, %s",e.Message, tcdv_info.tcdv_id);
: : AddMsg(error.c_str());
: : }
: : //2010.12.02
: : if(tcdv_stat.tfdt_cnt)
: : {
: : for(int i = 0; i < tcdv_stat.tfdt_cnt; i++)
: : {
: : if(tcdv_stat.tfdt_stat[i].itfdtstat == 0)
: : SaveTFDTStat(i);
: : }
: : }
: :
: : delete StringList_TFDT;
: :
: :
: : 이런내용이거든요 근데 여기가문제라면 또 안에 try catch해서 로그남기게했으니까
: : 여기 내용이떠야하는데 뜨지않구 Init()함수 에서 뜨니까..
: : exception 이 잘 못잡아준다그러는거알긴하는데
: : 어떻게 이걸 찾아야할지모르겠고 소스를봐도 아이래서 문제겠지해서
: : 조취를 취해도 도무지 모르겠더라구요 ㅠㅠ
: : 진짜 저번주부터 계속 잡고있는데
: : 이게 통신이 불안정하거나 이럴때 뜨는데 불안정하는경우가
: : 별로 없잖아요 그리고 항상 새벽에 이렇게 떠서 어떻게해야할지모르는거에요
: : 근데 이게 일어나는 시점이 통신이 끊어졌더라던지 아니면 불안정할때
: : 떴거든요
: : 좀 어떤 문제인지 조언이나 도와주세요.ㅠㅠ
|