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
[74306] Re:디버깅모드와 컴파일 모드에서 프로그램이 상당히 다르게 작동합니다. 디버깅 불가.
빌더(TWx) [builder] 4143 읽음    2017-03-31 21:29
바보맨 님이 쓰신 글 :
: 빌더 6 로 만들어진 장비 제어 프로그램 입니다. OS 윈도우 7
:
: 갑자기 일부 수정할 부분이 있어서 다시 소스를 돌려서 확인 중에 있습니다 .
:
: 문제는 디버깅 모드와  릴리즈 모드에서 상당히 다르게 작동합니다.
:
: 릴리즈모드 정상적으로 작동하는 프로그램
:
: 디버깅모드에서는 모터의 상태을 읽어 오는 부분이 작동되지 않습니다.
: 아마 스레드에서 모터와 IO 등 상태를 계속해서 읽어오는 부분이
: 디버깅 모드에서 그 쪽 코드가 실행이 안되는 것 같습니다.
:
: " 제가 만든 코드가 않이라서 디버깅모드를 꼭해야 하는데 "
:
: 혹시 디버깅 모드에서 스레드를 코드가 실행되지 않은 증상을 알고 게신분 있나요 ?
:
: 그 전에는 2년 전에 이 소스로 디비깅을 했던 기역있는데 갑자기 이런 현상이 발생..
:
: 상황이 좀 .. 그렇킨 합니다만..혹시 경험 있으신분 있나요
:


엠바툴 사용하지 않은지 오래 돼서 BC6의 경우 단정적으로 말하기는 곤란하지만

릴리즈모드와 디버깅 모드에서 프로그램이 다르게 동작하는 이유는 몇가지 추정을 할 수는 있습니다.

가령...
assert(obj->SomeFuncion());
위와 같은 assert  구문이 문제가 될수도 있고

컴파일러에 따라서는 초기화 되지 않은 변수에 대해서...
릴리즈 모드에서는 터치하지 않고 가비지 값으로 그대로 두지만
디버깅 모드에서는 제로 값으로 초기화 하는 코드를 생성하기도 합니다.

그리고 프로그램에서 다른 모듈에 의존할 경우...
그 다른 모듈이 주 프로그램과 다른 모드로 컴파일 되어 있을 경우에도 문제가 될 수 있는데요
디버깅 모드와 릴리즈 모드에서 사용되는 CRT 런타임 라이브러리에서 메모리 할당과 관련해서
다른 allocation 모델을 사용할 경우 문제가 될 수도 있고요.

또 다른 경우라면, 릴리즈 모드에서 옵티마이징이 걸릴 경우, 함수호출 사이에 어떤 레지스터가
share 돼서 사용되는 경우도 있는데, 릴리즈 모드로 컴파일된 다른 모듈의 펑션을 디버깅 모드로 컴파일된
프로그램에서 사용할 때, 레지스터 conflic 이 일어날 수도 있겠죠.


+ -

관련 글 리스트
74304 디버깅모드와 컴파일 모드에서 프로그램이 상당히 다르게 작동합니다. 디버깅 불가. 바보맨 3688 2017/03/31
74306     Re:디버깅모드와 컴파일 모드에서 프로그램이 상당히 다르게 작동합니다. 디버깅 불가. 빌더(TWx) 4143 2017/03/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.