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
[63337] Re:accessviolation 문젠대요
아제나 [azena] 1067 읽음    2010-12-23 14:33
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 문젠대요 아제나 1067 2010/12/23
63343         Re:Re:accessviolation 문젠대요 알론소 1204 2010/12/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.