컴퓨터/C_Programing

Visual Studio C언어 디버그 모드 & 릴리즈 모드

김치부침개21 2016. 2. 2. 22:52
반응형

 

 

프로젝트를 컴파일하여 실행 파일을 만드는 방법에는 디버그/릴리즈 두 가지가 있다.

디버그 빌드와 릴리즈 빌드에서 서로 실행 결과가 다른 경우, 특기 디버그 빌드에서는 괜찮은데 릴리즈 빌드에서만 오류가 발생하여 프로그램이 죽는 경우가 있는데 이런 경우는 대부분 메모리가 깨진 경우에 발생한다. 두 모드에서 동적으로 메모리를 할당하면 힙 영역에 요청한 크기만큼 메모리를 할당 받게 되는데 그 초기값이 다르다.

릴리즈 빌드의 경우 할당된 메모리 영역을 초기화하지 않는 경우 바로 할당되기 직전의 쓰레기 값이 그대로 사용되는 반면 디버그 빌드의 경우 디버거로 디버깅하는데 블록을 구분하기 위해 0xCC, 0xDD와 같은 값으로 초기화된다.

 

디버그 모드

실행 파일에 디버깅 정보를 삽입하여 언제든지 디버깅을 할 수 있도록 하며 프로젝트 디렉토리 아래에 Debug 서브 디렉토리에 실행 파일을 만들어 준다. 디버깅 정보가 들어가 있기 때문에 실행 파일의 상태를 확인할 수 있다.

 

릴리즈 모드

일체의 디버깅 정보를 삽입하지 않을 뿐만 아니라 코드를 최적화하여 실행 파일 크기를 최대한 줄여준다. 릴리즈 모드로 만든 실행 파일로는 디버깅을 할 수 없지만 속도나 크기면에서는 디버그 모드로 만든 실행 파일보다 월등히 유리하다. 모든 버그를 잡고 개발이 완료되었을 때는 릴리즈 모드로 컴파일해야 한다.

 

 

- Vs 6.0 에서의 설정 방법..
1. “Project/Settings/"을 선택하여 프로젝트 세팅 다이알로그를 띠운다.

2. ”C/C++“ 탭에서 ”General" 카테고리를 선택해서 "Optimizations"을 “Disable(Debug)"로 선택하고 “Debug info" 항목을 ”Program Database“로 바꾼다.
3. "Link" 탭에서 “Debug" 카테고리를 선택하면 ”Debug info" 항목이 있는데 여기서 "Microsoft format"을 선택한다.
4. “Link" 탭에있는 ”Project Options" 박스에 들어 있는 내용의 맨 끝에 "/OPT:REF"를 추가 한다.
5, 반드시 “Rebuild All"로 제 컴파일을 한다.

릴리즈 모드에서는 Assert를 무시하므로 코딩할때 유의하자.

#ifdef NDEBUG로해서 릴리즈모드일때만 따로 되게 만들어 버리는것도 나쁘지 않다.

반응형