我有一個2009年中期的MacBook Pro和一個新的2012年MacBook Pro,我正在學習DTrace(一個非常了不起的工具)。當我計算新的2012 MBP的聚合時,聚合不會打印出來。DTrace END probe永遠不會觸發
sudo dtrace -n 'syscall:::entry { @[execname] = count() }'
在我2009年中期MBP,它顯示是這樣的:
usbmuxd 1
GrowlHelperApp 2
imklaunchagent 2
installd 2
stackshot 2
...
2012年的MBP沒有顯示任何東西。
我加入一個幸福和END探測器一個printf,看是否END探測器甚至會火象這樣:
BEGIN
{
printf("Hi!");
}
syscall:::entry
{
@[execname] = count();
}
END
{
printf("Bye!")
}
在2009年中期MBP兩個探頭髮射和印刷在2012 MBP僅BEGIN探針被觸發。 END從未被解僱。
這兩個MBP都在運行Lion 10.7.3。我不確定接下來要嘗試什麼。現在想到的唯一區別是我沒有在2012 MBP上安裝開發人員命令行工具。這對我來說沒有任何意義,而且是在黑暗中拍攝的。
任何幫助或想法,將不勝感激。謝謝。
============= [啓用Root帳戶] ====================
所以我啓用了root帳戶並重新運行該命令
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有什麼區別?
嘗試在系統上啓用「root」](http://support.apple.com/kb/ht1528)。 – Kentzo