gpt4 book ai didi

macos - DTrace END 探针从不触发

转载 作者:行者123 更新时间:2023-12-04 19:14:44 27 4
gpt4 key购买 nike

我有一台 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 上安装开发人员命令行工具。但这对我来说没有意义,而且是在黑暗中拍摄。

任何帮助或想法将不胜感激。谢谢。

============[启用根帐户]====================

所以我启用了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 有什么区别?

最佳答案

我也注意到在 linux 上。

如果 dtrace 是由 sudo 生成的,则 Ctrl-C 不起作用。

如果你 sudo -i 获得一个 root shell,然后调用 dtrace 它就可以了。

关于macos - DTrace END 探针从不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com