c - dtracing 一个短暂的应用程序

标签 c dtrace

我编写了一个 DTrace 脚本,用于测量在我的 C 程序中的一个函数内花费的时间。程序本身运行,输出一些数据然后退出。

问题是它完成了让我快速获取进程 ID 并启动 DTrace 的方法。

目前我的代码中有一个 sleep() 语句,它让我有足够的时间启动 DTrace。必须修改您的代码才能获取有关它的信息有点违背 Dtrace 的目的……对吧。

基本上,我要做的是让 DTrace 等待进程 ID 出现,然后针对它运行我的脚本。

最佳答案

假设您正在使用 pid 提供程序,在这种情况下,无法在进程创建之前启用这些探测。通常的解决方案是使用“-c”选项从 dtrace 本身调用程序。

如果由于某种原因您不能这样做(即您的进程必须在其他进程设置的某些环境中启动),您可以尝试更复杂的方法:使用 proc::::start 或 proc:::exec-success 跟踪程序实际启动的时间,使用 stop() 操作在该点停止程序,然后使用 system() 运行另一个使用 pid 提供程序的 DTrace 调用,然后“修剪”再次编程。

关于c - dtracing 一个短暂的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343620/

相关文章:

c - 当 API 需要一个指针时,如何将常量传输到我的嵌入式设备?

c - 多任务如何让工作线程在调用无限循环函数后获得控制权

linux - ltrace 等同于 osx?

java - Java的DTrace可以用于Windows等非Unix Like操作系统吗?

tcp - 跟踪 FreeBSD TCP 重传

macos - 插入 OS X 系统调用

c - 获取 X11 窗口标题高度

c - 以最少的指令获得最快的整数平方根

C union 位域转换

linux - Ubuntu 上的 DTrace,操作方法?