我编写了一个DTrace脚本来测量我的C程序中函数内部所花费的时间.程序本身运行,输出一些数据然后退出.
问题是它完成了让我快速获取进程ID并启动DTrace的方法.
目前我的代码中有一个sleep()语句,这给了我足够的时间来启动DTrace.必须修改你的代码才能获得有关它的信息有点挫败Dtrace的目的......对.
基本上我所追求的是让DTrace等待进程ID显示然后运行我的脚本.
大概你正在使用pid提供程序,在这种情况下,在创建进程之前无法启用这些探测器.通常的解决方案是使用"-c"选项从dtrace本身调用该程序.
如果由于某种原因你不能这样做(即你的进程必须在某些其他进程设置的环境中启动),你可以尝试一种更复杂的方法:使用proc ::: start或proc ::: exec-在程序实际启动时跟踪成功,使用stop()动作在该点停止程序,然后使用system()运行另一个使用pid提供程序的DTrace调用,然后再次"修剪"程序.
| 归档时间: |
|
| 查看次数: |
852 次 |
| 最近记录: |