2012-06-23 12 views
5

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?

+1

Spróbuj [włączyć "root"] (http://support.apple.com/kb/ht1528) w swoim systemie. – Kentzo

Odpowiedz

5

Zauważyłem to również na Linuksie.

Ctrl-C nie działa, jeśli dtrace zrodził przez sudo.

Jeśli sudo -i uzyskać powłokę roota, a następnie powołać dtrace to działa.

+0

Nadal nie jestem pewien, co zmieniło się między dwoma mac, ale to działa i jest łatwiejsze niż próby zabicia procesu. Próbowałem też sudo-i działało.Dzięki – SargeATM

+0

prawdopodobnie wersja sudo. Jestem ciekawa jaka jest wersja sudo w twoim starszym macosxie? – ithkuil

+0

Pomogło mi to w OSX 10.8. Dzięki! –