none
[TIP] 디버깅 모드와 릴리즈 모드의 차이점 RRS feed

  • 일반 토론

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

    디버깅 모드 (컴파일시 들어가는 디버깅에 필요한 자질구리한 정보를 뺀 알짜 프로그램만 쏙 뽑아냄)
    - 실행파일에 디버깅 정보를 삽입하여 언제든지 디버깅을 할 수 있도록 하며 Debug서브 폴더에 실행파일을
       만들어줍니다.
    - 디버깅정보가 들어가 있기때문에 실행파일 상태를 확인할 수 있습니다.
    - 디버그에 필요한 정보들을 실행시 계속 체크함으로써 속도가 느립니다.
    - 디버그 빌드와 릴리즈 빌드에서 서로 실행 결과가 다른 경우?
       특히 디버그 빌드에서는 괜찮은데 릴리즈 빌드에서만 오류가 발생하여 프로그램이 죽는 경우가 있는데
       이런 경우는 대부분 메모리가 깨진 경우에 발생합니다. 두 모드에서 동적으로 메모리를 할당하면 힙 영역에
       요청한 크기만큼 메모리를 할당 받게 되는데 그 초기값이 다릅니다.
    - 릴리즈 모드와 디버깅모드의 차이점은?
       디버깅 정보를 실행코드 안에 넣느냐 안 넣느냐가 차이점이 되겠지요.
       즉, 디버거 모드로 컴파일하게되면 실행상태에서 추적할수 있는 정보가 실행파일 안에 들어가게 되므로
       용량이 커지고, 릴리즈 모드의 경우 디버깅 정보없어 순수한 소스코드자체의 기능만 컴파일되어 실행파일로
       만들어집니다.


    • 편집됨 devlife 2012년 4월 2일 월요일 오후 12:59
    2012년 4월 2일 월요일 오후 12:59

모든 응답

  • 디버깅 모드 (컴파일시 들어가는 디버깅에 필요한 자질구리한 정보를 뺀 알짜 프로그램만 쏙 뽑아냄)

    이라고 하셨는데 릴리즈 모드가 그런거 아닌가요?

    2012년 4월 2일 월요일 오후 1:36
  • - 같은 문자열 상수라도 서로 다른 공간에 할당됩니다.

    스레드마다 리터럴의 할당이 따로된다는거랑은 또 다른건가요...?

    리터럴이 여러개 생성될 수 있다는이야기는 조금 생소한 내용이네요...

    상수 문자열 주소비교를 애용하는데,

    작지만 몇몇 프로그램 만들어보면서 전혀 문제가 발생한적이 없는데

    특별히 어떠한 상황에서라는게 있나요...?

    2016년 7월 11일 월요일 오후 8:38