Зонд DTrace END никогда не срабатывает

У меня MacBook Pro середины 2009 года и новый MacBook Pro 2012 года, и я изучаю DTrace (довольно удивительный инструмент) . Когда я вычисляю агрегаты на новом MBP 2012, агрегаты не распечатываются.

sudo dtrace -n 'syscall:::entry { @[execname] = count() }'

На моем ПМБ середины 2009 года отображается что-то вроде:

  usbmuxd                                                           1
  GrowlHelperApp                                                    2
  imklaunchagent                                                    2
  installd                                                          2
  stackshot                                                         2
  ...

ПМБ 2012 ничего не показывает.

Я добавил printf в зонд BEING и END, чтобы увидеть, сработает ли вообще зонд END, например:

BEGIN
{
    printf("Hi!");
}

syscall:::entry
{
   @[execname] = count();
}

END
{
    printf("Bye!")
}

В MBP середины 2009 года оба зонда сработали и напечатали, а на MBP 2012 сработал только зонд BEGIN. END так и не выстрелил.

Оба MBP работают под управлением Lion 10.7.3. Я не уверен, что попробовать дальше.Единственное отличие, которое сейчас приходит на ум, заключается в том, что я не устанавливал инструменты командной строки разработчика на MBP 2012 года. Это просто не имеет смысла для меня, хотя и является выстрелом в темноте.

Будем признательны за любую помощь или идеи. Спасибо.

=============[ Включена корневая учетная запись ]=====================

Итак, я включил корневую учетную запись и повторнозапустил команду

sudo dtrace -n 'syscall:::entry { @[execname] = count() }'

безуспешно, но если я выполню

su
dtrace -n 'syscall:::entry { @[execname] = count() }'

, она сработает!

=============[ kill -s INT ]============================ =

Я провел еще немного экспериментов. Если я запускаю:

sudo kill -s INT [pid of dtrace]

все работает и отображается вывод.

Если я запускаю:

sudo kill -s INT [pid of sudo running dtrace]

это тоже работает!

Но если я нажму control-c в терминале, это не покажи вывод.

В чем разница между control-c и kill -s INT?

5
задан SargeATM 2 July 2012 в 16:46
поделиться