2013-04-23 2 views
-2

큰 프로젝트가 있고 많은 NSLog() 호출이 있습니다. 어떤 일이 발생하면 NSLog()이 작동하고 어떤 메시지가 NSLog에 전달되는지 알 수 없습니다. NSLog()이 클래스 파일에서 호출되는 곳을 어떻게 찾을 수 있습니까? NSLog(@"%@", someArray);프로젝트에서 NSLog의 함수의 위치를 ​​호출했습니다.

여기 로그입니다 :

NSLog이처럼 내

2013-04-23 20:43:38.257 myProj[2101:707] { 
    id = 1; 
    version = 1; 
} 

myProj[2101:707] 여기에 무엇을 의미합니까? 그것은 나에게 NSLog 함수의 위치에 대한 어떤 정보도 제공합니까?

답변

6

프로젝트를 검색하여 출력 할 수 있습니다. 예를 들어

출력이

This is my output with values 3.1415 and 1.2345. 

눌러 cmd를변화F하고 검색 할 경우 당신은 또한 검색에 자리 표시자를 삽입 할 수 있습니다

"이 값 내 출력" 용어 :

enter image description here

+0

파인더에 패턴을 삽입하는 방법을 배울 ..보다 좀 더 설명 할 수있는 관심이 ... 그 감사하겠습니다 – lakesh

+1

.. 돋보기를 클릭

당신의 PCH 파일을 DLOG 정의 아이콘의 왼쪽에있는 아이콘 – DrummerB

+0

감사합니다. 새로운 것을 배웠습니다 ... – lakesh

0

the function class_getName을 사용하여 로그 문이있는 객체의 클래스 이름을 가져올 수 있으며 클래스 이름을 NSLog()에 포함시킬 수 있습니다. 이처럼

:

#import <objc/runtime.h> 
… 
NSLog("%@ Some Log Statement", class_getName([self class])); 
+0

미래에 대한 좋은 지적이지만, OP는 처음에는 올바른 NSLog 문을 찾기가 힘듭니다. – DrummerB

1

변환 DLOG로 NSLog 사용의 모든 다음 로그 문이 인쇄됩니다 :

  1. 파일 이름
  2. 메소드 이름
  3. 라인을 번호

로그에 출력되는 모든 행. 이 방법으로 모든 로깅이 수행되는 곳을 즉시 볼 수 있습니다. DLog는 NSLog보다 훨씬 나은 로깅 메커니즘이며, 모든 프로젝트에서이 로그 파일을 사용해야합니다.

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

질문에 대답하는 데 도움이됩니까? DLog는 NSLog의 대안으로 정의 될 수 있지만 OP가 어떤 NSLog가 호출되는지를 찾는 데 도움이되지 않습니다. – nsgulliver

+0

@nsgulliver 만약 OP가 모든 NSLog를 DLog로 대체한다면, 그는 그가 찾고있는 전화를 발견 할 것입니다. – DrummerB

+0

@nsgulliver 나는 DLog가 좋은 해결책 인 방법을보다 명확하게하기 위해 답을 업데이트했다. – Wain