Solaris上使用DTrace进行动态跟踪

本文介绍了Solaris操作系统中的DTrace工具,它能动态跟踪系统行为和用户程序,提供了强大的基础设施,允许管理员、开发者和服务人员回答关于操作系统和用户程序行为的任意问题。DTrace通过探测(probe)机制,可以在不干扰程序执行的情况下查看内部信息,包括函数名、依赖库和内核函数调用。它还支持使用D语言编写跟踪脚本,允许用户共享知识和故障排查方法。文章详细讲解了如何使用DTrace监控系统调用、函数参数、执行时间,并给出了多个实例。
摘要由CSDN通过智能技术生成

Solaris内置的Dynamic Tracing (DTrace) 功能提供一个动态的跟踪环境。
DTrace is a comprehensive dynamic tracing framework for the Solaris Operating System. DTrace provides a powerful infrastructure that permits administrators, developers, and service personnel to concisely answer arbitrary questions about the behavior of the operating system and user programs.

与 truss 和相似的工具不同,可以使用 DTrace 检查正在运行的程序的内部情况,而不只是查看系统调用。DTrace 可以显示应用程序的函数名、它所依赖的任何库以及调用的内核函数。这把跟踪的方便性提高到与调试器差不多的水平。但是,与调试器不同,不能修改值,也不能暂停或以其他方式改变应用程序的执行过程。只能跟踪执行过程,而不能控制它。

DTrace 的另一个独特之处是可以编写跟踪脚本,称为“D”的脚本语言,使用D语言,很容易编写动态启动probe、收集信息及处理信息的脚本。D脚本使用户可以方便地同其他人员共享知识和故障检修方法。Solaris 10中包含大量有用的D脚本,在Sun公司的BigAdmin 站点:sun.com/bigadmin/content/dtrace/和OpenSolaris项目站点:opensolaris.org/os/community/ dtrace/上可以找到更多脚本。

DTrace 会在应用程序中添加检测机制,从而识别不同的执行点。这些执行点称为探测(probe),包括在内核、库和程序中定义的探测。内核、库和用户程序中的所有函数都可以指定为探测。另外,可以使用静态定义的探测识别感兴趣的特殊执行点。例如,在内核中可以使用探测识别向磁盘写数据的执行点。开发人员可以在程序中添加特定的探测,从而允许用户启用跟踪。这些探测称为 User-land Statically Defined Tracing(USDT)。
Probe就像遍布于Solaris系统中各个感兴趣位置的可编程传感器。
可以使用 dtrace 工具获得探测列表;-l 命令行选项列出系统中定义的所有探测:$ dtrace -l。例如在我用的solaris上,有超过5万个probe点。
-bash-3.00# dtrace -l | wc -l
51927

Probe
Prob

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值