VC++ 통합환경ì�„ ì‚¬ìš©í• ë•Œ 가장 ë§Žì�´ 쓰게 ë�˜ëŠ” 기능 중, Build->Start(CTRL+F5)와 Debug->Go(F5)ì�˜ ì°¨ì�´ì �중 하나ì—� 대해 알아 ë³´ê² ìŠµë‹ˆë‹¤.
F5는 IDE(통합환경)ê°€ 실행 프로세스를 ë°˜ë�™ê²°(Soft-ice)ìƒ�태로 실행시켜, 사용ìž�ê°€ ë‚´ë¶€ 변수ì�˜ ê°’ì�„ 들여다 ë³¼ 수 있거나 중간ì—� 멈출 수 있게 합니다. 디버깅ì�„ í• ë•Œì—� 아주 중요한 ì—í• ì�„ 하지요.
반면, CTRL-F5는 IDEê°€ 실행 프로세스를 단순히 ìƒ�성(fork)하는 ì—í• ë§Œ 합니다. 즉, ë°°í�¬ë�œ 프로그램ì�„ 우리가 설치해서 ì‹¤í–‰í• ë•Œì™€ 똑같ì�€ 환경ì�´ë�¼ê³ ìƒ�ê°�하면 ë�˜ê² 습니다.
ì�´ ë‘� ê°œì�˜ 기능ì�€ 방금 설명한 것 ì�´ì™¸ì—� 조금 다른 실행환경ì�„ ì œê³µí•©ë‹ˆë‹¤. 바로 "미초기화 변수ì�˜ 초기화"입니다. ê·¸ë¦¬ê³ , ì�´ ì–‘ìƒ�ì�€ 프로그램ì�´ 릴리즈 빌드ëƒ�, 디버그 빌드ëƒ�ì—� ë”°ë�¼ 다릅니다. 아래와 ê°™ì�€ 구조체와 ì�´ê²ƒì�„ 사용한 코드(비ë¡� 한 줄ì�´ì§€ë§Œ)ìžˆë‹¤ê³ ê°€ì •í•©ì‹œë‹¤.~cpp
struct Sample
{
Sample(bool b_isValid):b_isValid_(b_isValid){}
Sample(){}
inline bool isValid(){return b_isValid_;}
bool b_isValid_;
};
.
.
.
Sample smpl1;
bool b = smpl1.isValid();
ì�´ 코드를 릴리즈 빌드로 ë§Œë“¤ê³ , Start(CTRL+F5)로 ì‹¤í–‰í• ë•Œì�˜ bê°’ê³¼ Go(F5)로 ì‹¤í–‰í• ë•Œì�˜ bê°’ì�„ ì²´í�¬í•˜ë©´ 서로 다르게 나옵니다. Startì�˜ 경우 bì�˜ ê°’ì�´ falseê°€ ë‚˜ì˜¤ê³ , Goì�˜ 경우 bì�˜ ê°’ì�´ true로 나옵니다. 바꾸어 ë§�하면 Start는 미초기화 변수를 0으로 ë†“ê³ , Go는 0ì�´ 아닌 값으로 세팅한다는 것입니다. (ì‹¤ì œë¡œ bool 타입ì�˜ false ê°’ì�„ VC6ì�˜ 디버거로 ì�½ìœ¼ë©´ 0입니다. VC7ì�˜ 경우엔 falseë�¼ê³ 나오지만요)
한ë�°, 디버그 빌드ì�˜ 경우는 어떨까요? ê·¸ 경우ì—�는 Start나 Go나 ì°¨ì�´ë¥¼ ë³´ì�´ì§€ ì•Šê³ bê°’ì�´ true입니다. 여기서 ìž�그마한 ê²°ë¡ ì�„ ì–»ì�„ 수 있습니다.
>
한ë�°, 디버그 빌드ì�˜ 경우는 어떨까요? ê·¸ 경우ì—�는 Start나 Go나 ì°¨ì�´ë¥¼ ë³´ì�´ì§€ ì•Šê³ bê°’ì�´ true입니다. 여기서 ìž�그마한 ê²°ë¡ ì�„ ì–»ì�„ 수 있습니다.
- 디버그 빌드를 했거나 F5로 실행시키는 경우, 미초기화 변수는 0� 아닌 값으로 초기화�다.
- 릴리즈 빌드한 프로그램� CTRL-F5로 실행시키는 경우, 미초기화 변수는 0으로 초기화�다.
ë””ë²„ê¹…í• ë•ŒëŠ” 잘 ë�Œë�˜ 프로그램ì�´ 그냥 실행시킬 ë•� 오ë�™ìž‘ì�„ ë³´ì�´ëŠ” 경우가 있어 막대한 육체ì �/ì •ì‹ ì � ì—�너지를 ë‚비하는 경우가 있는ë�°, 그런 경우를 만난다면 ì�´ 글ì�˜ ë‚´ìš©ì�„ 한 번쯤 ë– ì˜¬ë ¤ 보시기 ë°”ëž�니다. ê·¸ë¦¬ê³ ë‹¤ì�Œì�˜ ì �ê²€ì�„ 해보시기 ë°”ëž�니다.
-기본ìƒ�성ìž�ê°€ 함부로 ë‚´ë�™ëŒ•ì�´ì³�ì ¸ 있는가?
-복사�성��서 멤버 간 대입(member-wise assignment)를 잘 하는가?
- ì „ì—변수와 ì •ì �변수 초기화를 ì œëŒ€ë¡œ 했는가?
- 실수로 초기화하지 ì•Šê³ ì“°ëŠ” ì§€ì—변수가 있는가?(요즘 나오는 대부분ì�˜ 좋ì�€ 컴파ì�¼ëŸ¬ëŠ” ê²½ê³ ë©”ì‹œì§€ë¥¼ 내주긴 합니다만)
ExtractedFrom) http://www.kwak101.pe.kr/-복사�성��서 멤버 간 대입(member-wise assignment)를 잘 하는가?
- ì „ì—변수와 ì •ì �변수 초기화를 ì œëŒ€ë¡œ 했는가?
- 실수로 초기화하지 ì•Šê³ ì“°ëŠ” ì§€ì—변수가 있는가?(요즘 나오는 대부분ì�˜ 좋ì�€ 컴파ì�¼ëŸ¬ëŠ” ê²½ê³ ë©”ì‹œì§€ë¥¼ 내주긴 합니다만)









