Tôi có MacBook Pro giữa năm 2009 và MacBook Pro 2012 mới và tôi đang trong quá trình học DTrace (một công cụ khá tuyệt vời). Khi tôi tính toán tổng hợp trên MBP 2012 mới, tập hợp không in ra.Đầu dò DTrace END không bao giờ cháy
sudo dtrace -n 'syscall:::entry { @[execname] = count() }'
On tôi giữa năm 2009 MBP, nó cho thấy một cái gì đó như:
usbmuxd 1
GrowlHelperApp 2
imklaunchagent 2
installd 2
stackshot 2
...
2012 MBP không hiển thị bất cứ điều gì.
Tôi đã thêm một printf trong một sinh mệnh và END thăm dò để xem nếu thăm dò END thậm chí sẽ sa thải như vậy:
BEGIN
{
printf("Hi!");
}
syscall:::entry
{
@[execname] = count();
}
END
{
printf("Bye!")
}
Trên giữa năm 2009 MBP cả đầu dò bị sa thải và được in và trên 2012 MBP chỉ đầu dò BEGIN bị sa thải. END không bao giờ bị sa thải.
Cả hai MBP đang chạy Lion 10.7.3. Tôi không chắc phải làm gì tiếp theo. Điểm khác biệt duy nhất hiện tại là tôi chưa cài đặt các công cụ dòng lệnh của nhà phát triển trên MBP 2012. Điều đó không có ý nghĩa với tôi và là một phát bắn trong bóng tối.
Bất kỳ trợ giúp hoặc ý tưởng nào sẽ được đánh giá cao. Cảm ơn.
============= [Bật gốc tài khoản] ====================
Vì vậy, tôi kích hoạt tài khoản gốc và tái chạy lệnh
sudo dtrace -n 'syscall:::entry { @[execname] = count() }'
không thành công nhưng nếu tôi làm
su
dtrace -n 'syscall:::entry { @[execname] = count() }'
nó hoạt động!
============= [kill -s INT] =========================== ==
Tôi đã thử nghiệm thêm một chút. Nếu tôi chạy:
sudo kill -s INT [pid of dtrace]
mọi thứ hoạt động và đầu ra được hiển thị.
Nếu tôi chạy:
sudo kill -s INT [pid of sudo running dtrace]
cũng làm việc này!
Nhưng nếu tôi sử dụng điều khiển-c trong thiết bị đầu cuối, nó không hiển thị đầu ra.
Sự khác nhau giữa control-c và kill -s INT là gì?
Hãy thử [bật "root"] (http://support.apple.com/kb/ht1528) trên hệ thống của bạn. – Kentzo