JavaScript is required to for searching.
跳过导航链接
退出打印视图
DTrace 用户指南     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  简介

2.  DTrace 基础知识

列出探测器

在 DTrace 中指定探测器

启用探测器

DTrace 操作基础知识

数据记录操作

trace() 函数

tracemem() 函数

printf() 函数

printa() 函数

stack() 函数

ustack() 函数

jstack() 函数

破坏性操作

处理破坏性操作

stop() 函数

raise() 函数

copyout() 函数

copyoutstr() 函数

system() 函数

内核破坏性操作

breakpoint() 函数

panic() 函数

chill() 函数

DTrace 聚合

DTrace 聚合语法

3.  使用 D 语言编写脚本

4.  使用 DTrace

索引

列出探测器

您可以通过将 -l 选项传递给 dtrace 命令来列出所有 DTrace 探测器:

# dtrace -l
ID   PROVIDER    MODULE        FUNCTION NAME
 1     dtrace                           BEGIN
 2     dtrace                           END
 3     dtrace                           ERROR
 4    syscall                     nosys entry
 5    syscall                     nosys return
 6    syscall                     rexit entry
 7    syscall                     rexit return
 8    syscall                   forkall entry
 9    syscall                   forkall return
10    syscall                      read entry
11    syscall                      read return
...

要计算系统上所有可用的探测器数目,可以键入以下命令:

# dtrace -l | wc -l

所报告的探测器数目会根据操作平台和所安装软件的不同而有所不同。某些探测器在 MODULEFUNCTION 列下没有条目列出,例如上例中的 BEGINEND 探测器。在这些字段中具有空白条目的探测器不与所检测的某个具体程序函数或位置相对应。这些探测器引用更为抽象的概念,例如某个跟踪请求的末尾。名称中包含模块和函数的探测器称为固定探测器。不与模块和函数关联的探测器称为非固定探测器

可以使用更多选项来列出特定的探测器,如下列示例所示。

示例 2-1 按特定函数列出探测器

可以通过将 -f 选项与函数名称传递给 DTrace 来列出与某特定函数关联的探测器。

# dtrace -l -f cv_wait
ID      PROVIDER        MODULE        FUNCTION NAME
12921        fbt       genunix         cv_wait entry
12922        fbt       genunix         cv_wait return

示例 2-2 按特定模块列出探测器

可以通过将 -m 选项与模块名称传递给 DTrace 来列出与某特定模块关联的探测器。

# dtrace -l -m sd
ID      PROVIDER        MODULE        FUNCTION NAME
17147        fbt            sd          sdopen entry
17148        fbt            sd          sdopen return
17149        fbt            sd         sdclose entry
17150        fbt            sd         sdclose return
17151        fbt            sd      sdstrategy entry
17152        fbt            sd      sdstrategy return
...

示例 2-3 按特定名称列出探测器

可以通过将 -n 选项与名称传递给 DTrace 来列出与某特定名称关联的探测器。

# dtrace -l -n BEGIN
ID      PROVIDER        MODULE        FUNCTION NAME
1         dtrace                               BEGIN

示例 2-4 按启动点提供器列出探测器

您可以通过将 -P 选项与提供器名称传递给 DTrace 来列出从某特定提供器启动的探测器。

# dtrace -l -P lockstat
ID        PROVIDER        MODULE             FUNCTION NAME
469       lockstat       genunix          mutex_enter adaptive-acquire
470       lockstat       genunix          mutex_enter adaptive-block
471       lockstat       genunix          mutex_enter adaptive-spin
472       lockstat       genunix           mutex_exit adaptive-release
473       lockstat       genunix        mutex_destroy adaptive-release
474       lockstat       genunix       mutex_tryenter adaptive-acquire
...

示例 2-5 支持某个特定函数或模块的多个提供器

一个特定的函数或特定的模块可能受多个提供器支持,如下例所示。

# dtrace -l -f read
ID        PROVIDER        MODULE             FUNCTION NAME
  10       syscall                               read entry
  11       syscall                               read return
4036       sysinfo       genunix                 read readch
4040       sysinfo       genunix                 read sysread
7885           fbt       genunix                 read entry
7886           fbt       genunix                 read return

如上例所示,针对探测器的列出命令的输出显示了以下信息: