讨论一个短暂的应用程序

bin*_*ing 4 c dtrace

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

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

目前我的代码中有一个sleep()语句,这给了我足够的时间来启动DTrace.必须修改你的代码才能获得有关它的信息有点挫败Dtrace的目的......对.

基本上我所追求的是让DTrace等待进程ID显示然后运行我的脚本.

Dav*_*eco 5

大概你正在使用pid提供程序,在这种情况下,在创建进程之前无法启用这些探测器.通常的解决方案是使用"-c"选项从dtrace本身调用该程序.

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