일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tensorflow
- matplot
- 오라클
- MEAN Stack
- rs485
- rs422
- 텐서플로우
- Serial
- 자본주의
- Python
- MSSQL PYTHON
- c#
- sql developer
- vscode
- M2M
- 파이썬
- 장고
- 크롤링
- MX Component
- pymssql
- django
- PYTHON MSSQL
- 티스토리 초대장
- Visual Studio Code
- MSSQL
- 윈도우10
- windows10
- 딥러닝
- oracle
- scrapy
- Today
- Total
안까먹을라고 쓰는 블로그
Debug or Release Mode 설명 및 전처리 팁 본문
디버깅 모드 (컴파일시 들어가는 디버깅에 필요한 자질구리한 정보를 뺀 알짜 프로그램만 쏙 뽑아냄)
- 실행파일에 디버깅 정보를 삽입하여 언제든지 디버깅을 할 수 있도록 하며 Debug서브 폴더에 실행파일을
만들어줍니다.
- 디버깅정보가 들어가 있기때문에 실행파일 상태를 확인할 수 있습니다.
- 디버그에 필요한 정보들을 실행시 계속 체크함으로써 속도가 느립니다.
- 디버그 빌드와 릴리즈 빌드에서 서로 실행 결과가 다른 경우?
특히 디버그 빌드에서는 괜찮은데 릴리즈 빌드에서만 오류가 발생하여 프로그램이 죽는 경우가 있는데
이런 경우는 대부분 메모리가 깨진 경우에 발생합니다. 두 모드에서 동적으로 메모리를 할당하면 힙 영역에
요청한 크기만큼 메모리를 할당 받게 되는데 그 초기값이 다릅니다.
- 릴리즈 모드와 디버깅모드의 차이점은?
디버깅 정보를 실행코드 안에 넣느냐 안 넣느냐가 차이점이 되겠지요.
즉, 디버거 모드로 컴파일하게되면 실행상태에서 추적할수 있는 정보가 실행파일 안에 들어가게 되므로
용량이 커지고, 릴리즈 모드의 경우 디버깅 정보없어 순수한 소스코드자체의 기능만 컴파일되어 실행파일로
만들어집니다.
릴리즈 모드 (프로그램을 배포하기 위해 컴파일 하는 모드)
- 초기화 하지 않습니다.
- 같은 문자열 상수라도 서로 다른 공간에 할당됩니다.
- 디버깅정보를 삽입하지 않고 코드를 최적화하여 실행 파일 크기를 최대한 줄여줍니다.
- 속도나 크기면에서 월등히 유리합니다. (메모리 점유율로 낮아지고 실행도 빨라짐)
- 더 이상 현재버전에서 내결함성이나 문제점들을 발견할 수 없었을때 빌드하여 주는 모드입니다.
[Tip] 디버깅시와 현장에 배포시 서로 다른 변수나 항목이 있을 수 있습니다.
이럴때 아래와 같이 사용하시면 디버그 모드에서 컴파일시에는 위의 값이 적용되고 릴리즈모드컴파일시에는
아래의 값이 적용됩니다.
1 2 3 4 | #if DEBUG sConnectionString ="server=DUZIN-PC;uid=sa;pwd=1111;database=TASDBIC_20131009"; #else sConnectionString ="server=192.168.0.10;uid=sa;database=tasdbic"; | cs |
'Language > C#' 카테고리의 다른 글
[C#] WebServer (0) | 2013.12.18 |
---|---|
[C#] OLE 객체생성 [Activator.CreateInstance] (0) | 2013.12.03 |
.NET FrameWork No Down Version (0) | 2013.11.07 |
[C#] 프로그램에서 Enter, Esc키를 눌렀을때 실행될 버튼_Clink 이벤트 연결하기 (0) | 2013.10.08 |
[C#] InputBox 구현 (0) | 2013.07.04 |