티스토리 뷰

안녕하세요, IT디자이너입니다. 

 

이번 포스팅은 비쥬얼스튜디오 사용시 Debug모드와 Release모드의 차이점을 설명드리도록 하겠습니다. 

 

우선, 프로그램의 메모리 구성을 간단히 설명드리도록 하겠습니다. 

 

프로그램 실행시 데이터 특성에 따라 각기 다른 데이터 영역에 데이터가 저장됩니다. 

 

- 코드 영영 : 우리가 작성한 소스코드가 저장되는 영역입니다. 

 

- 데이터 영역 : 전역변수 및 static 변수가 저장되는 영역입니다. 

 

- 힙 영역 : run 타임중 메모리 동적할당에 의해 발생된 데이터가 저장되는 영역입니다. 

 

- 스택 영역 : 지역변수 및 매개변수가 저장되는 데이터 영역입니다.

 

 

이제 본격적으로 Debug모드와 Release 모드를 설명드리도록 하겠습니다. 

 

Debug 모드는 우리가 개발하고 실행을 할 경우 메모리 영역에 대한 안전장치를 제공하는 역할을 합니다. 

 

변수 1개를 초기화하여 스택에 PUSH 할 경우 스택당 4Byte의 메모리공간이 제공됩니다. 하지만,

Debug모드는 1개의 스택당 위와 아래에 여유공간을 4Byte씩 제공하여 총 12Byte를 차지하게 됩니다. 

 

이렇게 할 경우 프로그래머 실수하여 디버깅 도중 오류가 발생하는 일을 어느정도 예방할 수 있는 것입니다. 

 

또한 Debug모드는 할당되는 스택영역을 0CCCCCCCCh 라는 값으로 미리 채워놓기까지 하여, 쓰레가값의 출력을 예방합니다. 

 

Release 모드는 Debug모드와 달리 1개의 변수를 초기화시 스택에는 정확하게 4Byte만큼의 스택영역을 확보합니다. 

그리고 프로젝트 컴파일 속성에서 최적화가 설정되어 있다면은 컴파일러의 판단하에 몇몇 함수들은 매크로 함수로 전환되어 컴파일되기까지 합니다. 

 

실제 상업용 서비스로 출시하는 프로그램일 경우 꼭 Release 모드로 생성된 프로그램이여야 합니다. 

 

그 이유는, Debug 모드처럼 프로그래머를 배려하기 위해 여러가지 안전장치들로 인해 프로그램이 무거워지며 속도가 저하되는 현상이 발생될 수 있습니다. 

 

그렇기 때문에 Release 모드로하여, 디버깅하고 테스트하는 것이 조금 더 바람직한 습관일 것입니다. 


자 이렇게 Debug모드와 Release 모드의 차이점에 관해서 간단히 포스팅하였습니다. 사실 조금더 파헤쳐보면 더욱 더

큰 차이가 있긴 하지만 이부분은 추후 포스팅하도록 하겠습니다. !!

 

감사합니다.  

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함