Как обнаружить без системного метода или системной инфраструктуры с DTrace на Mac OS X? - PullRequest
0 голосов
/ 21 августа 2011

Как просто напечатать пользовательский класс и метод, используя DTrace , без системного класса, метода, такого как NSLock, NSThread, NSObject и т. Д.

Используя следующий D-код, он может отследить все методы Objective-C, включая системные и определяемые пользователем:

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

1 Ответ

1 голос
/ 22 августа 2011

DTrace знает только о ядре и пользовательских пространствах.Он ничего не знает о том, какие библиотеки являются частью системы, а какие нет.

Если вы следуете соглашениям Какао и правильно ставите префикс перед всеми вашими классами, вы можете указать префикс в имени зонда.Например, если ваш префикс VIC:

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

Этот зонд будет запущен, только если переданный класс имеет префикс VIC.

...