2011. 12. 20. 09:07

디버그 심볼이란것은 빌드를 할때 디버깅이냐 릴리즈이냐에 따라 특정코드를 빼고 넣고 하는 기능입니다.
예를 들면 디버깅 할때는 A_DEV라는 클래스를 참조하여 디버깅이 쉽게 할수 있지만 릴리즈때는 A클래스를 참조 시켜 퍼포먼스 최적화를 노린다던가 할때 사용합니다.

저는 디버깅용 모듈을 만들어 쓰는 것을 좋아해서 디버깅 심볼을 자주 쓰진 않았습니다.
디버깅용 모듈을 만들면 릴리즈모드에서도 특정동작으로 디버그 메시지 같은 것을 출력할수 있게 하여서 디버깅이 쉽게 할수 있다는 장점 때문이죠 ㅎㅎㅎ
프로그램이 무거워 진다는 단점이 있지만 OTL

실버라이트로 넘어오니 웹서비스때문에 디버그 심볼을 자주 이용하게 되서 정리해 둡니다.

1.디버그 심볼 지정하기
비주얼 스트디오에서
프로젝트 속성 > 빌드 > 조건부 컴파일 기호
를 지정해주시면 됩니다.


1번을 보시면 릴리즈 같은 다른 빌드구성도 선택할수 있는데 해당 빌드 구성마다 디버그 심볼을 따로 만들어 주셔야 합니다.

2번에 디버그 심볼을 일반적으로 대문자만 사용합니다.
여러개를 지정하고 싶다면 콤마(,)로 구분하시면 됩니다.

2. 사용하기
C++때와 마찬가지로 샵(#)으로 시작하면 됩니다.
일반적으로 #if~#endif 를 많이 사용합니다.
하지만 로컬, 개발서버, 운영서버 이런식으로 있다면 #elif를 사용하여 여러 빌드구성을 지정할수 있습니다.

#if LOCAL
    using Service = Tiger.ServiceLocal;
#elif DEV
    using Service = Tiger.ServiceDev;
#else
    using Service = Tiger.ServiceMC; 
#endif


이렇게 디버깅 심볼을 지정해 두시면 비주얼 스트디오상에 바로 표시가 됩니다.


개발서버 구성을 성택하면 15번줄이 활성화 됩니다.

3.더 자세한 내용
#if 문에 대한 더 자세한 내용은 MSDN을 참고 하세요
참고 : MSDN - #if(C# 참조)