私は 2009 年半ばの MacBook Pro と新しい 2012 年の MacBook Pro を持っており、DTrace (かなり素晴らしいツール) を学んでいます。新しい 2012 MBP で集計を計算すると、集計が出力されません。
sudo dtrace -n 'syscall:::entry { @[execname] = count() }'
私の2009年半ばのMBPでは、次のように表示されます。
usbmuxd 1
GrowlHelperApp 2
imklaunchagent 2
installd 2
stackshot 2
...
2012 MBP には何も表示されません。
BEING および 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 に開発者コマンド ライン ツールをインストールしていないことです。しかし、それは私には意味がなく、暗闇の中でのショットです.
ヘルプやアイデアをいただければ幸いです。ありがとう。
=============[ルートアカウントを有効にする]====================
だから私はルートアカウントを有効にしてコマンドを再実行しました
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 の違いは何ですか?