Leopard上的DTrace:即使我指定了探测器,也没有指定探测器

时间:2009-07-28 21:18:46

标签: objective-c cocoa macos dtrace

% sudo dtrace -p 2446 'objc$target:NSObject:-init:entry { trace(); }'
dtrace: no probes specified

The manpage表明这是用于在Objective-C方法上指定探测的正确格式。我试过-Z,但(不出所料)只是没有打印任何东西。

[已添加]它甚至不是Objective-C探针特有的。我用AppKit的C函数尝试了它:

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

那有什么不对?为什么DTrace认为我没有指定任何探测器?

3 个答案:

答案 0 :(得分:3)

我认为你的意思是:

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

答案 1 :(得分:0)

有问题的流程是否允许dtrace? Apple doesn't always allow dtrace on os x。

答案 2 :(得分:0)

除了格雷厄姆所说的,你的原始陈述只会找到NSObject的实例,而不是它的后代。你可以试试

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

通过所有NSObject派生的实例捕获所有-init变体。