가끔씩 gdb에 근거한 알수없는 로깅시스템도 한몫을 하는데요 우리의 허접하기 짝이없는 NSLog를 화려하게 업그레이드 시키는 방법을 알아보도록 할까요.
우선 목표는 NSLog의 내용을 파일명과 에러발생 지점 라인, 기타 정보를 포함함과 동시에 빌드시에 선택하는 ActiveConfiguration을 Debug로 선택했을때만 로깅하도록 해보겠습니다.

(1) 자신의 프로젝트 루트를 선택합니다.
(2) Info버튼을 눌러 Build 탭으로 이동합니다.
(3) Debug를 선택합니다.
(4) Show에서는 Setting defined this level을 선택해 줍니다.
(5) 그림에는 안나왔는데 좌측 하단의 Add User-defined setting을 눌러 OTHER_CFLAGS = -DDEBUG=1 을 추가해 줍니다.
이제 Debug모드로 컴파일할때는 #define DEBUG 1 이 자동으로 설정되게 됩니다.
이제 각각의 프로젝트의 prefix를 열어봅시다. 보통은 프로젝트명_Prefix.pch 이름을 가지고 있습니다.
다음을 추가해 주도록 합시다.
#ifdef DEBUG
#define NSLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define NSLog( s, ... )
#endif
이제는 Debug모드일때만 이쁘게 로깅을 하며, 그외의 경우에는 NSLog가 아예 동작하지 않게 됩니다. 한결 좋아졌네요.
참고 :
http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog
http://stackoverflow.com/questions/300673/is-it-true-that-one-should-not-use-nslog-on-production-code
"허접프로그래머 / iPhone&Objective-C" 분류의 다른 글
트랙백을 보내세요
-
iPhone Device와 Simulator 구분하여 로그 남기기
Tracked from 프로가 되자. 2009/05/21 09:43iPhone 개발을 하다보니, device에 올려서 NSLog를 출력하면 속도가 급격히 떨어지는 현상을 종종 겪고는 합니다.실제로 올려서 테스트 하는 경우도 있지만 보통은 simulator에서 열심히 디버깅을 하고 device에 올려서 최종 테스트를 하고.. 이런 과정을 거쳐서 개발을 하는데요, 이럴때 device에 올렸을때만 로그가 안찍히게 할 수 있는 방법을 소개해드립니다.iPhone simulator에서 동작을 할 때에는 "TARGET_IPH...
-
팡타스틱 Xcode 이용 팁
Tracked from 팡타스틱! 2009/07/06 13:19디버깅 로그 확장하기 Xcode3.x 문서 업데이트 받기 제게 유일하게 익숙한 IDE 는 Eclipse입니다. 요즘 간단한 아이폰 앱 개발을 위해 Xcode를 이용하기 시작 했는데 익숙하지 않아서 많이 불편해요. 그래서 불편함을 해결해 줄 팁들을 지속적으로 모아 놓을 페이지를 오픈 합니다. 쿨럭- 디버깅 로그 확장하기 Xcode로 프로젝트 생성후 myHeader.h 같이 공통 헤더를 만들어 .m 들에서 import 하여 도 되지만, 프...
-
[아이폰개발] Debug 모드에서만 NSLog 사용
Tracked from DoNT 2011/04/25 14:411. DEBUG 플래그를 설정합니다.Xcode4일 경우 아래 그림에서 보이는 것 처럼 DEBUG 가 기본 설정되어 있습니다.2. pch 파일에 아래 내용을 추가합니다.#ifdef DEBUG #define NSLog(s, ...) NSLog(@"<%@(%d):%s> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __FUNCTION__, [NSStri...


