gpt4 book ai didi

dtrace - 从 DTrace 脚本调用 C 函数

转载 作者:行者123 更新时间:2023-12-01 09:09:54 26 4
gpt4 key购买 nike

DTrace令人印象深刻的强大的跟踪系统,最初来自 Solaris,但它被移植到 FreeBSD 和 Mac OSX。

DTrace 使用称为 D 的高级语言,与 AWK 或 C 不同。下面是一个示例:

io:::start
/pid == $1/
{
printf("file %s offset %d size %d block %llu\n", args[2]->fi_pathname,
args[2]->fi_offset, args[0]->b_bcount, args[0]->b_blkno);
}

使用命令行sudo dtrace -q -s <name>.d <pid>来自该进程的所有 IO 都会被记录。

我的问题是,是否以及如何可以从 DTrace 脚本调用自定义 C 函数,以便在跟踪过程中对跟踪数据执行高级操作。

最佳答案

DTrace 明确地阻止您执行此类操作,原因与您无法在 D 中编写循环相同:如果您以任何方式、形状或形式将其搞砸,整个系统都会崩溃。当 D 探针触发时,您处于 KERNEL 模式,而不是用户态。让我引用“Linux内核模块编程指南”:

所以,你想写一个内核模块。你知道 C,你写过很多正常程序作为进程运行,现在你想要到达真正的地方行动是,一个单一的野指针可以清除你的文件系统和一个核心转储意味着重新启动。

这就是为什么你不想在 D 调查中扮演牛仔,以及为什么 D 的限制对你有好处。 =]

关于dtrace - 从 DTrace 脚本调用 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2183981/

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