下表提供了 D 内置变量的完整列表。所有这些变量都是标量全局变量;D 语言中当前未定义线程局部变量、子句局部变量或内置关联数组。
表 3–1 DTrace 内置变量
类型和名称 |
说明 |
---|---|
int64_t arg0, ..., arg9 |
探测器的前 10 个输入参数表示为原始的 64 位整数。如果传递到当前探测器的参数少于 10 个,则其余变量将返回 0。 |
args[] |
为当前探测器键入的参数(如果存在)。可使用整数索引访问 args[] 数组,但将每个元素定义为与给定探测器参数对应的类型。例如,如果通过 read(2) 系统调用探测器引用 args[],则 args[0] 为 int 类型,args[1] 为 void * 类型,args[2] 为 size_t 类型。 |
uintptr_t caller |
进入当前探测器之前的当前线程的程序计数器位置。 |
chipid_t chip |
当前物理芯片的 CPU 芯片标识符。有关更多信息,请参见第 26 章。 |
processorid_t cpu |
当前 CPU 的 CPU 标识符。有关更多信息,请参见第 26 章。 |
cpuinfo_t *curcpu |
当前 CPU 的 CPU 信息。有关更多信息,请参见第 26 章。 |
lwpsinfo_t *curlwpsinfo |
与当前线程关联的轻量进程 (lightweight process, LWP) 的 LWP 状态。此结构将在 proc(4) 手册页中详细说明。 |
psinfo_t *curpsinfo |
与当前线程关联的进程的进程状态。此结构将在 proc(4) 手册页中详细说明。 |
kthread_t *curthread |
当前线程 (kthread_t) 的操作系统内核的内部数据结构的地址。kthread_t 在 <sys/thread.h> 中定义。有关此变量和其他操作系统数据结构的更多信息,请参阅 Solaris Internals。 |
string cwd |
与当前线程关联的进程的当前工作目录名称。 |
uint_t epid |
当前探测器的已启用的探测器 ID (enabled probe ID, EPID)。该整数唯一标识使用特定谓词和操作集启用的特定探测器。 |
int errno |
此线程最后一次执行的系统调用返回的错误值。 |
string execname |
传递到 exec(2) 以执行当前进程的名称。 |
gid_t gid |
当前进程的实际组 ID。 |
uint_t id |
当前探测器的探测器 ID。此 ID 是当前探测器的系统范围内的唯一标识符,由 DTrace 发布,并列在 dtrace -l 的输出中。 |
uint_t ipl |
触发探测器时当前 CPU 的中断优先级 (interrupt priority level, IPL)。有关 Solaris 操作系统内核中的中断级别和中断处理的更多信息,请参阅 Solaris Internals。 |
lgrp_id_t lgrp |
当前 CPU 所属的延迟组的延迟组 ID。有关更多信息,请参见第 26 章。 |
pid_t pid |
当前进程的进程 ID。 |
pid_t ppid |
当前进程的父进程 ID。 |
string probefunc |
当前探测器说明的函数名称部分。 |
string probemod |
当前探测器说明的模块名称部分。 |
string probename |
当前探测器说明的名称部分。 |
string probeprov |
当前探测器说明的提供器名称部分。 |
psetid_t pset |
包含当前 CPU 的处理器集的处理器集 ID。有关更多信息,请参见第 26 章。 |
string root |
与当前线程关联的进程的根目录名称。 |
uint_t stackdepth |
触发探测器时当前线程的栈帧深度。 |
id_t tid |
当前线程的线程 ID。对于与用户进程关联的线程,该值等于调用 pthread_self(3C) 的结果。 |
uint64_t timestamp |
纳秒时间标记计数器的当前值。此计数器从过去的任意时间点递增,仅用于相对计算。 |
uid_t uid |
当前进程的实际用户 ID。 |
uint64_t uregs[] |
触发探测器时当前线程的已保存的用户模式寄存器值。uregs[] 数组的用法将在第第 33 章中讨论。 |
uint64_t vtimestamp |
纳秒时间标记的当前值,实际是当前线程在 CPU 中已运行的时间减去 DTrace 谓词和操作中所花费时间而得到的值。此计数器从过去的任意时间点递增,仅用于相对时间计算。 |
uint64_t walltimestamp |
自 1970 年 1 月 1 日 00:00 世界标准时间以来的当前纳秒数。 |
D 语言中的内置函数(如 trace())将在第 10 章中讨论。