C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[63343] Re:Re:accessviolation 문젠대요
알론소 [smire4454] 1204 읽음    2010-12-24 09:46
감사합니다
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 이 잘 못잡아준다그러는거알긴하는데
: : 어떻게 이걸 찾아야할지모르겠고 소스를봐도 아이래서 문제겠지해서
: : 조취를 취해도 도무지 모르겠더라구요 ㅠㅠ
: : 진짜 저번주부터 계속 잡고있는데
: : 이게 통신이 불안정하거나 이럴때 뜨는데 불안정하는경우가
: : 별로 없잖아요 그리고 항상 새벽에 이렇게 떠서 어떻게해야할지모르는거에요
: : 근데 이게 일어나는 시점이 통신이 끊어졌더라던지 아니면 불안정할때
: : 떴거든요
: : 좀 어떤 문제인지 조언이나 도와주세요.ㅠㅠ

+ -

관련 글 리스트
63334 accessviolation 문젠대요 알론소 884 2010/12/23
63337     Re:accessviolation 문젠대요 아제나 1068 2010/12/23
63343         Re:Re:accessviolation 문젠대요 알론소 1204 2010/12/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.