요약


  • 디버깅 정보가 실행코드에 포함 되느냐 되지 않느냐의 차이임

 

  • 디버그와 릴리즈 각각 실행 했을 때 둘 중 하나가 정상적으로 실행되지 않을 경우 코드 상의 문제있기 때문에 두 모드 전부 정상적으로 실행 되었을 때 배포해야 함

 

디버그 모드


실행 파일에 디버깅 정보를 포함하여 언제든지 디버깅을 진행할 수 있다. 릴리즈 모드보다 더 많은 메모리를 사용하는데 이는 디버그에 필요한 정보들을 실행 시 계속 체크하기 때문이다.

 

  • 실행 파일에 디버깅 정보를 포함한다.
    • 디버깅 정보를 보기 위한 dll이 필요함 ex) mfc42d.dll, mfcn42d.dll, mfco42d.dll, msvcrtd.dll

 

  • 실행 파일 상태 정보 확인이 가능하다.

 

  • 디버깅 정보를 포함했기 때문에 릴리즈 모드에 비해 속도가 느리다.

 

 

릴리즈 모드


  • 디버그에 대한 정보가 포함되지 않으며, 코드 최적화를 진행하여 실행 파일의 크기를 최대한 줄인다.

 

  • 초기화를 하지 않으며, 같은 문자열 상수라도 서로 다른 공간에 할당된다.

 

  • 속도와 크기, 메모리 사용 측면에서 메모리 점유율이 낮기에 디버그 모드 보다 속도가 빠르다.

 

  • 순수한 코드 자체의 기능만 담긴 파일이며, 더 이상 문제점이 없을 때 빌드한다.

 

또한 디버그 모드 빌드와 릴리즈 모드 빌드의 결과가 차이가 나는 경우는, 디버그 모드 특성상 실제 코드 이외에 디버그 정보가 들어가는 영역이 많아서 메모리 침범을 일으키는 버그가 발생해도 디버그 영역에 의해 오류가 발생하지 않다가 릴리즈 모드로 변경되면 메모리 영역에 불필요한 공간이 없어지면서 메모리 침범이 오류로 직결되는 경우도 있다.

 

Reference


[1] https://vitalholic.tistory.com/356

[2] https://j2hworld.tistory.com/77

[3] https://killsia.tistory.com/entry/debug-release-모드의-차이점과-배포

+ Recent posts