본문 바로가기

iPhone

Debug 시에만 NSLog 출력 하기. (Debug 모드 구분하기)

어플 개발시 NSLog 를 통해 Debugger Console 상에 객체의 값이나 카운트 등을 출력하여 테스트 할 수 있습니다.
Log 를 찍어보는 방법은 특히나 Debug시에 자주 사용되는 방법입니다.

저도 이런 방법으로 Debug를 해 보다가.. 너무나 여러 곳에서 NSLog를 남발하였더니, 'Debug, Release 모드를 구분해서 Debug 모드일 경우에만 NSLog 를 출력하게 할 순 없을까?' 하는 생각이 들더군요.

해법

의외로 방법은 간단 했습니다.
바로, Project Info 에서 Configuration 을 Debug 모드로 하고, GCC4.2 - Processing 탭의 Preprocessor Macros 를 추가하는 것이죠. 저는 DEBUG=1 이라고 추가 했습니다.



단, 여기서 끝은 아닙니다. :)

NSLog 를 출력하시는 곳에서 Debug모드를 구분 할 수 있도록 다음과 같이 코딩 해 주시는 작업을 더하면 됩니다.

#ifdef DEBUG

NSLog(@"\nIMAGE_PATH : %@", [self IMG_PATH]);

#endif


이렇게 하면, Debug 모드인 경우에만 Debug Console에 "IMAGE_PATH : " 가 출력이 됩니다 :)


더하기

앗. 그리고 NSLog를 매번 #ifdef ~ #endif 로 감싸지 않고 Prefix에 NSLog를 재정의 해 두는 방법이 있군요. 
멋진 방법인 것 같아서 링크 남겨요. 꼭 참고 해 보세요 :) 

아이군의 블로그 :: [iPhone]NSLog 업그레이드 + Debug 모드에서만 로깅하기

#ifdef DEBUG

#define NSLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )

#else

#define NSLog( s, ... )

#endif