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
[53822] Re:왕초보 입니다. 고수님들 도와주세요...
방태윤 [nabty] 1531 읽음    2008-07-01 14:59
컴파일 에러도 없는데 .. 실행하면 .. 에러는 나는데 어떤 부분에서 나오는지 모르신다는거죠?

어느 함수에서 나는 에러인지 모르는경우 말이죠,.

조은 방법이 있겠지만,.. 제가 사용하는 방법을 말씀드리께요..

일단 아래 함수 하나 만듭니다

void add_debug_log(AnsiString str)
{
    SYSTEMTIME t;
    GetLocalTime(&t);

    AnsiString f_str=AnsiString().sprintf("%02d%02d",t.wHour,t.wMinute);
  AnsiString fname=ExtractFilePath(Application->ExeName)+f_str+"_log.txt";
    FILE*fp=fopen(fname.c_str(),"a+t");

    AnsiString tstr;
  tstr.sprintf("%04d.%02d.%02d %02d:%02d:%02d",t.wYear,t.wMonth,t.wDay,t.wHour,t.wMinute,t.wSecond);
  AnsiString temp=tstr+" "+str+"\n";
  fputs(temp.c_str(),fp);
    fclose(fp);
}
//---------------------------------------------------------------------------
위 함수는 일분마다 새화일을 만들면서 로그를 추가하는 일을 합니다.


그리고 소스의 각 라인 마다

add_debug_log(AnsiString().sprintf("FILE:%s FUNC:%s LINE:%d",__FILE__, __FUNC__, __LINE__));

아래와 같이 넣습니다.ㅋ

그리고 돌리다 팅기면..어디까지 진행 됬는지 알수 있겠죠...

처음엔 함수 호출 전 후에 넣어서 어떤 함수가 이상있는지 찾아낸후,,

다시 함수 안의 각 라인에 어디서 에러가 나서 멈추는지 찾는거죠,,

첨에 말씀드렸듯이  무식합니다.

무식하면 손발이 고생한다는데...어쩜니까 ,,이렇게 라도 해야죠..ㅋ

제 예를 들어보면 프로그램을 돌리면...한 4,5시간 마다 에러가 납니다,,

그래서 위의 방법으로 한 일주일 만에 찾았담니다.

그때 찾은 에러는 우습게도  GetTextMetrics(dc,&tm);

dc 가 이상이 있나 봤더니..

위에는 TBitmap 의 Handle 이었고 아래는 정상적으로 delete 되 있었지만,

시간이 지나면 애러를 내더군요,

dc 를 vcl 아닌 api 로 바꾸니까 비로소 에러가 안나더군요,..

위의 경우는 그런 경우도 있더라는 ... 그냥 참고 하시라고 말씀드리니다.

암튼 방법이 좀 무식해서..ㅋㅋ

어떤 프로그램들 보면 에러나면...어디서 호출 됬는지 메세지창으로 나오던데..

그런거.. 어떻게 하는건지 아시는 분은 좀 알려주심 감사하겠습니다.




이카로스 님이 쓰신 글 :
: 프로그램 고수님들에게 자문을 구합니다.
: 다름이 아니오라 요번에 저희 회사에서 프로잭트 작업을 하면서  C++로 프로그램 작업했습니다.
: 그런데 작업한 프로그램을 구동중에 간혹 [system error. code : 87. 매개변수가 틀립니다.] 라고 나옵니다.
: 위 에러 메서지가 여러개가 나오면서 프로그램창에서 튕겨져 나오는데 도무지 알수가 없습니다.
: 도대체 어디서 잘못이 된건지 알수가 없어서 고수님들에게 자문을 구합니다.
: 위 문제를 어떤 식으로 해결해야 하는지 알수 있을까요?
: 꼭좀 도와주세요.
: 그럼 좋은 답변 기다리고 있겠습니다.
: 더운 날씨에 건강 조심들 하세요.

+ -

관련 글 리스트
53818 왕초보 입니다. 고수님들 도와주세요... 이카로스 1042 2008/07/01
53822     Re:왕초보 입니다. 고수님들 도와주세요... 방태윤 1531 2008/07/01
53823         좋은답변 정말로 감사합니다. 이카로스 1326 2008/07/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.