第29 章• fpuinfo 提供器399
400
pid 提供器
使用pid 提供器,可跟踪用户进程中任何函数的进入和返回,以及按绝对地址或函数偏移
量指定的任何指令。不启用探测器时,pid 提供器不会产生探测影响。启用探测器后,探测
器将仅对其跟踪的那些进程产生探测影响。
命名pid 探测器
实际上,pid 定义了一个提供器类。每个进程都可能具有独立关联的pid 提供器。例如,ID
为123 的进程将使用pid123 提供器进行跟踪。对于来自这些提供器的其中之一的探测器,
探测器说明的模块部分将引用对应进程的地址空间中装入的对象。以下示例使用mdb(1) 显
示对象列表:
$mdb -p 1234
Loading modules: [ ld.so.1 libc.so.1 ]
> ::objects
BASE LIMIT SIZE NAME
10000 34000 24000 /usr/bin/csh
ff3c0000 ff3e8000 28000 /lib/ld.so.1
ff350000 ff37a000 2a000 /lib/libcurses.so.1
ff200000 ff2be000 be000 /lib/libc.so.1
ff3a0000 ff3a2000 2000 /lib/libdl.so.1
ff320000 ff324000 4000 /platform/sun4u/lib/libc_psr.so.1
30 第3 0 章
401
在探测器说明中,将根据文件名而不是其完整路径名来命名对象。此外,也可以省略“.1”
或“so.1” 后缀。以下所有示例命名的探测器都相同:
pid123:libc.so.1:strcpy:entry
pid123:libc.so:strcpy:entry
pid123:libc:strcpy:entry
第一个示例是探测器的实际名称。其他示例则是为方便而使用的别名,在内部,该别名将
被替换为完整的装入对象名称。
对于可执行文件的装入对象,可以使用别名a.out。以下两种探测器描述指定了同一探测器
:
pid123:csh:main:return
pid123:a.out:main:return
与所有固定DTrace 探测器一样,探测器描述的函数字段指定模块字段中的函数。用户应用
程序二进制文件的同一个函数可能有多个名称。例如,mutex_lock 可能为libc.so.1 中函数
pthread_mutex_lock 的备选名称。DTrace 为这样的函数选择一个标准名称,并在内部使用
该名称。以下示例说明了DTrace 在内部如何将模块和函数名称重新映射为标准形式:
# dtrace -q -n pid101267:libc:mutex_lock:entry’{ \
printf("%s:%s:%s:%s\n", probeprov, probemod, probefunc, probename); }’
pid101267:libc.so.1:pthread_mutex_lock:entry
^C
这种自动重命名意味着,您启用的探测器名称可能与实际启用的探测器名称略有不同。在
运行同一个Solaris 发行版的系统上,每次运行Dtrace 时,标准名称总是保持一致。
有关如何有效使用pid 提供器的示例,请参见第33 章。
函数边界探测器
使用pid 提供器,可以对用户程序中函数的进入和返回进行跟踪,就像FBT 提供器为内核提
供该功能一样。为适应用户进程,可对本手册中使用FBT 提供器跟踪内核函数调用的大多
数示例略作修改。
函数边界探测器
402 Solaris 动态跟踪指南• 2006 年7 月
entry 探测器
调用被跟踪函数时将触发entry 探测器。entry 探测器的参数为被跟踪函数的参数的值。
return 探测器
被跟踪函数返回或对另一个函数进行尾部调用时,将触发return 探测器。arg0 的值是函数
中返回指令的偏移;arg1 存储返回值。
函数偏移探测器
使用pid 提供器,可以跟踪函数中的任何指令。例如,要跟踪函数main() 4 个字节处的指
令,可以使用与以下示例类似的命令:
pid123:a.out:main:4
每次程序执行地址main+4 处的指令时,将激活此探测器。未定义偏移探测器参数。uregs[]
数组可帮助您检查这些探测器位置的进程状态。有关更多信息,请参见第418 页中的
“uregs[] 数组”。
稳定性
pid 提供器使用DTrace 的稳定性机制来说明其稳定性,如下表所示。有关稳定性机制的更
多信息,请参见第39 章。
元素名称稳定性数据稳定性相关性类
提供器发展中发展中ISA
模块专用专用未知
函数专用专用未知
名称发展中发展中ISA
参数专用专用未知
稳定性
阅读(471) | 评论(0) | 转发(0) |