使用 dtrace 分析 C 代码

Posted

技术标签:

【中文标题】使用 dtrace 分析 C 代码【英文标题】:Profile C code with dtrace 【发布时间】:2012-09-06 19:55:48 【问题描述】:

我正在通过 *** 寻找最佳的分析技术。

我有一堆 24/7 运行的进程,用 C 语言编写并使用 Oracle 10g。我发现了几个我想尝试的工具:oprofile、strace、systemtap 和 dtrace。

我想从 dtrace 开始,因此我一直在寻找一些简单的 dtrace 脚本,它可以连接到正在运行的进程'并打印出所有函数调用,每个函数调用所花费的时间......也许是调用图。请提出一些建议好的脚本开始,任何链接,教程,手册。

【问题讨论】:

你用谷歌搜索过什么吗?您对这些教程有什么具体问题吗?您现在的问题似乎要求我们为您搜索 google 教程/whatnot。 是的,我有。并且有很多脚本。我只是想找到一个好的开始。就是这样。 【参考方案1】:

简单。 Linux 上没有 DTrace(我最后一次听说)。

如果您渴望 DTrace 并愿意尝试一个真正的操作系统(呃,哦,flamebait :-),请尝试 FreeBSD,它带有功能性和集成的 DTrace。

【讨论】:

更不用说kqueue,我碰巧更喜欢epoll 我这里有一个 - link。如果它不是真正的 dtrace,我应该尝试其他方法:/ 有趣。你能让它工作吗?它当然没有与 Linux 集成,因为许可证不兼容。 是的,DTrace for Cocoa Developers 的第一个示例有类似的输出。但是应用于我的进程的相同命令行以某种方式阻止了对 oracle db 的访问......所以我试图找出如何以正确的方式使用它。

以上是关于使用 dtrace 分析 C 代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 DTrace 在 Rust 上获取堆栈跟踪/分析数据

用 C 编写一个 DTrace 消费者

dTrace 脚本和工具 [关闭]

我们可以使用 dtrace 对每个内核进行分析吗?

是否可以在 Mac OS X 上通知 DTrace 动态生成的代码?

如何用 D 语言正确打印 uint64_t (dtrace)