Utils Debug 와 Relsease 모드의 차이

Debug 와 Relsease 모드의 차이

Release Mode


프로그램을 배포하기 위해 컴파일 하는 모드

-초기화 하지 않는다.

-같은 문자열 상수라도 서로다른 공간에 할당한다.
-디버깅정보를 삽입하지 않고 코드를 최적화하여 실행 파일 크기를 최대한 줄여준다.
-속도나 크기면에서 월등이 유리하다(메모리 점유율로 낮아지고 실행도 빨라짐)
-더이상 현재버전에서 내결함성이나 문제점들을 발견할 수 없었을때 빌드하여 주는 모드


Debug Mode


-컴파일시 들어가는 디버깅에 필요한 자질구리한 정보를 뺀 알짜 프로그램만 쏙 뽑아냄
-실행파일에 디버깅 정보를 삽입하여 언제든지 디버깅을 할 수 있도록 하며 Debug서브 폴더에 실행파일을 만들어준다.
-디버깅정보가 들어가 있기때문에 실행파일 상태를 확인할수 있다.
-디버그에 필요한 정보들을 실행시 계속 체크함으로써 속도가 느림


디버그 빌드와 릴리즈 빌드에서 서로 실행 결과가 다른 경우?


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

-릴리즈 모드와 디버깅모드의 차이점은?
디버깅 정보를 실행코드 안에 넣느냐 안넣느냐임
즉 디버거 모드로 컴파일하게되면 실행상태에서 추적할수 있는 정보가 실행파일 안에 들어가게 됨
그래서 용량이 커점
릴리즈는 디버깅 정보없어 순수한 소스코드자체의 기능만 컴파일되어 실행파일로 만들어짐

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Related Post

[Linux] Could not get lock /var/lib/dpkg/lock/frontend/ , Error[Linux] Could not get lock /var/lib/dpkg/lock/frontend/ , Error

이와같은 에러가 날경우 Node.js 설치할때 발생되는 오류가고 하지만 본인의경우는 가상환경이나 다른 pc에도 우분투를 설치할때 이와같은 에러가 항상 빈번하게 발생됬다. 그래서 아래와 같이 몇몇 폴더를 삭제하고 재 업데이트를 해주면 대부분 해결되었다.

[Mac]앱을 강제로 종료하는 방법[Mac]앱을 강제로 종료하는 방법

Mac에서 앱을 강제로 종료하는 방법 Mac에서 반응하지 않는 앱을 정상적으로 종료할 수 없는 경우 강제 종료를 사용하여 앱을 닫습니다. Mac에서 앱을 정상적으로 종료하려면(닫으려면) 메뉴 막대의 해당 앱 메뉴에서 ‘종료’를 선택하거나