Solaris 动态跟踪指南

内置变量

下表提供了 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 章中讨论。