mam połowie 2009 MacBook Pro i nowy MacBook Pro 2012 i jestem w procesie uczenia DTrace (dość niesamowite narzędzie). Podczas obliczania agregatów na nowym MBP 2012 agregaty nie są drukowane.DTrace sonda END nie odpala
sudo dtrace -n 'syscall:::entry { @[execname] = count() }'
Na moim połowie 2009 MBP, to pokazuje coś takiego:
usbmuxd 1
GrowlHelperApp 2
imklaunchagent 2
installd 2
stackshot 2
...
w 2012 MBP nie pokazuje nic.
dodałem printf w bycie i koniec sondy, aby zobaczyć czy sonda END byłoby nawet ogień tak:
BEGIN
{
printf("Hi!");
}
syscall:::entry
{
@[execname] = count();
}
END
{
printf("Bye!")
}
Na połowie 2009 MBP obie sondy zwolniony i drukowane oraz na 2012 MBP tylko Sonda BEGIN wystrzelona. KONIEC nigdy nie został wyrzucony.
Oba urządzenia MBP działają z Lwem 10.7.3. Nie jestem pewien, co dalej. Jedyną różnicą, jaka przychodzi mi na myśl, jest to, że nie zainstalowałem narzędzi wiersza poleceń programisty w 2012 MBP. To jednak nie ma dla mnie sensu i jest strzałem w ciemność.
Każda pomoc lub pomysły będą mile widziane. Dzięki.
============= [Włączone konta root] ====================
Więc włączony konto i korzeń re-ran Komenda
sudo dtrace -n 'syscall:::entry { @[execname] = count() }'
bez powodzenia, ale jeśli robię
su
dtrace -n 'syscall:::entry { @[execname] = count() }'
to działa!
============= [zabić -S INT] =========================== ==
Zrobiłem trochę więcej eksperymentowania. Jeśli uruchomię:
sudo kill -s INT [pid of dtrace]
wszystko działa, a wynik jest wyświetlany.
Jeśli biegnę:
sudo kill -s INT [pid of sudo running dtrace]
działa to też!
Ale jeśli mogę użyć Ctrl-C w terminalu, to nie pokazać wyjście.
Jaka jest różnica między Ctrl-C i zabić -s INT?
Spróbuj [włączyć "root"] (http://support.apple.com/kb/ht1528) w swoim systemie. – Kentzo