본문 바로가기

이전글

VC++ DEBUG 모드에서는 실행이되고 RELEASE 모드에서는 실행되지 않을때

해당 프로그램을 직접 실행해 봐야 할 것 같은데.....


일단 이런 것들을 확인해보세요.


1. debug와 Release모드에서의 Project Setting을 확인해보세요.
라이브러를 include해주는 부분에 차이가 날 수 있구요...


2. 혹시 직접제작한 라이브러리 이외의 라이브러리를 사용하신다면
그 라이브러리가 Debug모드와 Release모드에서 모두 동작하는 지 확인해보세요.


3. 경고는 뜨지 않지만 함수의 호출이 잘 못되어 있는 경우가 있을 수 있습니다.
Debug모드에서는 자동으로 강제로 변환해주지만, Release에서는 안되는 경우가 있습니다. ( 이경우에는 닷넷에서 컴파일해보면 경고로 뜹니다.)


4. 포인트변수의 초기화가 이루어지지 않은 경우.
포인트변수의 초기화를 해두지 않고 메모리만 할당해 놓은 상태라면 debug모드에서는 자동으로 초기화되는 경우가 있지만, Release에서는 초기화가 되지를 않습니다.


5. 다른 클래스에서 사용하는 전역변수의 경우에 Debug모드에서는 잘 찾아가지만, Release모드에서는 찾지 못하는 경우가 발생하기도 합니다.


6. 마지막으로 실행되는 순서입니다.
프로그램을 하다보면, 스레드나, 메시지를 많이 사용하게 되는데, 그 순서가 바뀌는 경우가 있습니다.


예전에 약간 경험했던 황당했던 기억을 되살려서 정리했는데,

참고가 되시길.....
http://blog.bagesoft.com/254

내가 찾고 있던 문제를 해결했다. 제목과 같이 debug 모드에서 build된 프로그램의 경우 정상적으로 내가 만든 dll파일을 Load했지만 Release 모드에서 build된 프로그램의 경우 dll을 Load 하지 못하는 경우가 발생했다.

ㅎㄷㄷㄷㄷ 작은 프로그램이지만 내가 만드는 프로그램이 수천명이 쓴다고 하는데.. 사소한 차이로 위와 같은 버그가 발생했다. 하루 종일 삽질한 결과 위 블로그 글을 참고 삼아서 내가 설정한 환경을 하나하나 찾아가 보니 Release 모드와 Debug 모드의 환경 설정이 달라서 해당 문제가 발생하게 된 것이었다.

납기일은 하루하루 다가 오는데.. 프로그램에는 오류가 있으니 하루종일 노심초사 했다. debug 모드로 build된 프로그램을 배포할 생각까지 했었다. 하지만 다행이다. 이 문제가 해결 됐으니.. 또 한 숨 놓았다.