跟踪用户应用程序

本主题描述跟踪用户应用程序。

跟踪操作取决于三个逻辑上不同的进程:所跟踪进程、控制器进程和分析器进程。 某个进程可同时为所跟踪进程、控制器进程和分析器进程。 当所跟踪进程正在运行并且到达跟踪点时,如果与此进程相关联的跟踪事件类型标识没有被滤出,那么会将跟踪事件记录到为该进程创建的跟踪流中。

控制器进程对将跟踪事件记录到跟踪流中的过程进行控制。 控制器进程会为活动的跟踪流执行下列操作:
  • 初始化跟踪流的属性。
  • 通过使用已初始化属性为指定的所跟踪进程创建跟踪流。
  • 启动和停止对跟踪流的跟踪。
  • 对要记录的跟踪事件的类型进行过滤。
  • 结束跟踪流。

在运行时当跟踪流处于活动状态且正在记录跟踪事件时,或在打开先前所记录但已关闭的跟踪日志之后,分析器进程会检索所跟踪事件。

posix_trace_createposix_trace_create_withlogposix_trace_open 子例程会创建跟踪流标识。 posix_trace_createposix_trace_create_withlog 子例程仅由控制器进程使用。 posix_trace_open 子例程仅由分析器进程使用。

所跟踪进程包含跟踪事件名称至为该进程定义的跟踪事件类型标识的映射。 活动的跟踪事件会对系统预定义的跟踪事件类型(例如,POSIX_TRACE_START)以及为所跟踪进程定义但没有被跟踪流滤出的跟踪事件类型进行记录。 要定义该映射,请从备有的应用程序调用 posix_trace_eventid_open 子例程或从控制器进程调用 posix_trace_trid_eventid_open 子例程。 对于预先记录的跟踪流,跟踪事件类型的列表是从预先记录的跟踪日志获取的。

可以在调试可能预先备有的代码和检视故障分析时使用跟踪子例程。 调试预先备有的代码可能需要预先过滤功能,以避免找不到跟踪流,并且允许关注需要的信息。 检视故障分析需要综合的跟踪功能以能够记录所有类型的信息。

要跟踪的事件属于下列两类:
  • 备有的应用程序生成的用户跟踪事件。
  • 操作系统生成的、与跟踪控制操作一致的系统跟踪事件。

在与活动的跟踪流相关联的文件中,st_ctimest_mtime 字段被标记为每次任何这些跟踪操作修改该文件时都进行更新。

在与跟踪流相关联的文件中,st_atime 字段被标记为每次任何这些跟踪操作导致从该文件中读取数据时都进行更新。

如果应用程序对与活动的或预先记录的跟踪流相关联的文件描述符执行任何操作,那么在为该跟踪流调用 posix_trace_shutdownposix_trace_close 子程序之前不会定义结果。