2009-07-28 5 views
2
% sudo dtrace -p 2446 'objc$target:NSObject:-init:entry { trace(); }' 
dtrace: no probes specified 

The manpage은 이것이 Objective-C 메소드에서 프로브를 지정하는 올바른 형식임을 나타냅니다. 나는 -Z를 시도했지만, 놀랍지 않게도 단지 아무 것도 인쇄하지 않았다.DTrace on Leopard : 프로브를 지정해도 프로브가 지정되지 않았습니다.

[추가] Objective-C 프로브에만 국한되지 않습니다. AppKit의 C 함수를 사용해 보았습니다.

sudo dtrace -p 2446 'pid$target::NSPopAutoreleasePool:entry { trace(); }' 
dtrace: no probes specified 

왜 그래? DTrace가 왜 프로브를 지정하지 않았다고 생각합니까?

답변

3

난 당신 말은 생각 :

sudo dtrace -p 2446 -n 'objc$target:NSObject:-init:entry { trace(); }' 
0

해당 프로세스에서 dtrace를 허용합니까? Apple doesn't always allow os x에 dtrace.

+1

내가 아는 한, 그렇습니다. 애플이 아닌 오픈 소스 애플 리케이션이다. 필자는 자신의 프로세스에서'P_LNOATTACH'를 설정하는 zsh에 대해 알지 못한다. –

0

그레이엄은 말뿐만 아니라, 원래의 문은, 그 후손을 NSObject의 인스턴스를하지 찾을 수 있습니다. 시도해 볼 수 있습니다. 모든 NSObject 파생 인스턴스가 모든 초기 변형을 포착 할 수 있습니다.

sudo dtrace -p 2446 -n 'objc$target::-init*:entry {}' 

+0

하위 클래스에 의해'[super init]'메시지를 포착하지 않겠습니까? –

+0

나는 그렇게 생각하지 않는다. super에서 메소드를 호출 할 때에도 모듈은 항상 인스턴스의 클래스로 설정됩니다. 방금 빈 모듈 대신 NSObject로 제안한 명령 줄을 시도했는데 일치하는 프로브가 없었습니다. 모듈을 3400 번 시도해 보았습니다. –

관련 문제