0

如何只使用DTrace打印用户定义的类和方法,而不使用系统类、方法,例如 NSLock、NSThread、NSObject 等?

使用以下 D 代码,它可以跟踪所有的 Objective-C 方法,包括系统和用户定义的方法:

objc$target:::entry
{
    printf("%s %s\n", probemod, probefunc);
}
4

1 回答 1

1

DTrace 只知道内核和用户空间。它不知道哪些库是系统的一部分,哪些不是。

如果您遵循 Cocoa 约定并正确为所有类添加前缀,那么您可以在探针名称中指定前缀。例如,如果您的前缀是VIC

objc$target:VIC*::entry
{
   printf("%s %s\n", probemod, probefunc);
}

只有当传递的类以 VIC 为前缀时,才会触发这些探测器。

于 2011-08-22T10:48:59.937 回答