xcode 환경에서 디버깅을 하기 위해서 많이 쓰는 함수가 NSLog() 함수이다.

디버그 모드에서야 로그 찍어 보느라 많이쓰지만, 릴리즈를 할때 그대로 둔다면 앱의 성능에 문제가 생길 수도 있다. 그래서 릴리즈 할때는 NSLog를 주석처리하고 릴리즈 하게 되는데 그게 여간 귀찮은 작업이 아닐 수 없다.

구글링 하다가 우연히 아래와 같은 을 발견. 나말고도 다른 많은 분들이 비슷한 방법을 사용중인가보다.

우선, 프로젝트명_Prefix.pch 의 이름을 가지고 있는 프로젝트 프리픽스 파일을 열어서 코드를 마지막에 추가한다.


#ifdef DEBUG
    #define NSLog(fmt, ...) NSLog((@"%s[Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
    #define NSLog(...)
#endif



그리고 디버그 모드에서만 NSLog 가 작동을 하도록 #define DEBUG 1 설정이 디버그 모드에서 자동으로 설정되도록 만들어준다.
프로젝트 Info 창을 띄워서 OTHER_CFLAGS 라는 항목을 검색한다. 만약에 없으면 Info 창 왼쪽 하단의 톱니바퀴를 눌러서 Add User-Defined Setting 메뉴를 통해서 OTHER_CFLAGS 라는 항목을 추가한다.

항목을 찾았으면(or 추가했으면) -DDEBUG=1 이라는 값을 세팅해 준다. 이제 디버그 모드에서는 로그가 출력되고, 릴리즈 모드에서는 출력이 안된다.
이를 아예 자주쓰는 템플릿에 넣어두면 새로 만드는 프로젝트마다 자동으로 적용되어 있어 더 편하게 작업할 수 있다.


템플릿이 저장되어 있는 디렉토리는 다음과 같다.


/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application/


참고: http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog


블로그 이미지

하루하루

하루하루를 열심히 살아가는 그런 사람이 되고자 합니다. 오늘을 후회없이 말이지요.

,