Manpages

______________________________________________________________________________

NAME

trace - 监 视 变 量 访 问

总 览 SYNOPSIS

trace option ?arg arg ...? _________________________________________________________________

描 述 DESCRIPTION

这 个 命 令 导 致 在 调 用 了 特 定 操 作 的 时 候 执 行 Tcl 命 令 。 现 在 只 实 现 了 变 量 跟 踪 。 合 法 的 option (选 项 ) (可 以 是 缩 写 )有 :

trace variable name ops command 安 排 command 在 变 量 name 被 以 用 ops 给 出 的 方 式 访 问 的 时 候 执 行 。 Name 可 以 引 用 一 个 普 通 变 量 、 数 组 的 一 个 元 素 , 或 整 个 的 一 个 数 组 (就 是 说 , name 可 以 只 是 一 个 数 组 的 名 字 , 而 不 加 在 圆 括 号 中 的 索 引 )。 如 果 name 引 用 整 个 的 一 个 数 组 , 则 在 操 纵 了 这 个 数 组 的 任 何 元 素 的 时 候 调 用 command 。 如 果 这 个 变 量 不 存 在 , 则 建 立 它 但 不 给 它 值 , 所 以 对 namespace which 查 询 是 可 见 的 , 但 对 info exists 不 是 。

Ops 指 示 要 进 行 何 种 操 作 , 它 由 下 列 字 母 中 的 一 个 或 多 个 组 成 :

r 在 读 这 个 变 量 的 时 候 调 用

command

w 在 写 这 个 变 量 的 时 候 调 用

command

u 在 删 除 这 个 变 量 的 时 候 调 用

command。 可 以 使 用 unset 命 令 显

式 的 删 除 变 量 , 或 者 在 过 程 返 回 的 时 候 隐 式 的 删 除 (所 有 它 们 的 局 部 变 量 )。 在 删 除 解 释 器 的 时 候 也 删 除 变 量 , 因 为 没 有 在 其 中 执 行 命 令 的 解 释 器 所 以 不 调 用 跟 踪 。 当 触 发 跟 踪 的 时 候 , 向 command 添 加 三 个 参 数 , 所 以 实 际 上 的 命 令 如 下 :
command name1 name2 op

Name1name2 给 出 被 访 问 了 的 变 量 的 名 字 : 如 果 这 个 变 量 是 个 标 量 , 则 name1 给 出 变 量 的 名 字 而 name2 是 一 个 空 串 ; 如 果 变 量 是 一 个 数 组 元 素 , 则 name1 给 出 数 组 的 名 字 而 name2 给 出 在 这 个 数 组 中 的 索 引 ; 如 果 整 个 数 组 被 删 除 并 且 跟 踪 注 册 在 整 个 数 组 上 , 而 不 是 在 一 个 单 一 元 素 上 , 则 name1 给 出 这 个 数 组 的 名 字 而 name2 是 一 个 空 串 。 Name1name2 不 是 必 须 与 在 trace variable 命 令 中 使 用 的 名 字 相 同 : upvar 命 令 允 许 一 个 过 程 在 不 同 的 名 字 下 引 用 一 个 变 量 。 Op 指 示 在 这 个 变 量 上 进 行 了 何 种 操 作 , 它 是 上 面 定 义 的 rw、 或 u 中 的 一 个 。

Command 在 与 调 用 跟 踪 操 作 的 代 码 的 相 同 的 上 下 文 中 执 行 : 如 果 被 访 问 的 变 量 是 一 个 Tcl 过 程 的 一 部 分 , 则 command 将 访 问 到 与 过 程 中 的 代 码 相 同 的 局 部 变 量 。 这 个 上 下 文 可 能 与 在 其 中 建 立 跟 踪 的 上 下 文 不 同 。 如 果 command 调 用 一 个 过 程 (它 经 常 这 么 做 ), 则 过 程 要 想 访 问 被 跟 踪 的 变 量 必 须 使 用 upvaruplevel。 还 要 注 意 name1 不 是 必 须 与 用 来 在 变 量 上 设 置 跟 踪 的 那 个 名 字 相 同 ; 如 果 通 过 用 upvar 定 义 的 一 个 变 量 进 行 访 问 , 则 可 能 发 生 不 同 。 对 于 读 和 写 跟 踪 , command 可 以 修 改 变 量 来 影 响 被 跟 踪 的 操 作 的 结 果 。 如 果 command 在 读 写 跟 踪 期 间 修 改 了 一 个 变 量 的 值 , 则 这 个 新 值 将 被 返 回 为 跟 踪 操 作 的 结 果 。 除 非 从 command 返 回 的 值 是 一 个 某 种 错 误 , 此 时 跟 踪 的 操 作 返 回 的 错 误 与 跟 踪 命 令 返 回 的 错 误 消 息 相 同 , 否 则 忽 略 它 (例 如 , 可 使 用 这 种 机 制 实 现 只 读 变 量 )。 对 于 写 跟 踪 , 在 这 个 变 量 的 值 被 改 变 之 后 调 用 command ; 它 把 一 个 新 值 写 到 这 个 变 量 中 来 屏 弃 在 这 次 写 操 作 中 指 定 的 原 始 值 。 要 实 现 只 读 变 量 , command 必 须 存 储 这 个 变 量 的 旧 值 。 当 command 在 一 个 读 或 写 跟 踪 期 间 执 行 的 时 候 , 在 变 量 上 的 跟 踪 被 暂 时 禁 用 。 这 意 味 着 command 调 用 的 读 和 写 将 直 接 发 生 , 不 用 再 次 调 用 command (或 任 何 其 他 跟 踪 )。 但 是 , 如 果 command 删 除 了 这 个 变 量 则 调 用 删 除 跟 踪 。 在 调 用 一 个 删 除 跟 踪 的 时 候 , 这 个 变 量 已 经 被 删 除 了 : 它 将 出 现 为 未 定 义 的 而 不 加 以 跟 踪 。 如 果 因 为 一 个 过 程 返 回 而 发 生 一 个 删 除 , 则 在 返 回 到 的 那 个 过 程 的 变 量 上 下 文 中 调 用 跟 踪 : 返 回 的 过 程 的 栈 桢 已 经 不 存 在 了 。 在 删 除 跟 踪 期 间 不 禁 止 跟 踪 , 所 以 如 果 一 个 删 除 跟 踪 命 令 建 立 了 一 个 新 的 跟 踪 并 访 问 了 这 个 变 量 , 则 调 用 这 个 跟 踪 。 忽 略 删 除 跟 踪 的 任 何 错 误 。 如 果 在 一 个 变 量 上 有 多 个 跟 踪 , 则 以 建 立 的 次 序 调 用 它 们 , 先 处 理 最 新 的 。 如 果 一 个 跟 踪 返 回 一 个 错 误 , 则 不 对 这 个 变 量 调 用 进 一 步 的 跟 踪 。 如 果 一 个 数 组 元 素 有 一 个 跟 踪 设 置 , 并 且 还 有 一 个 在 整 个 数 组 上 的 跟 踪 设 置 , 调 用 在 整 个 数 组 上 的 跟 踪 先 于 在 这 个 元 素 上 的 跟 踪 。 一 旦 建 立 了 , 跟 踪 保 持 有 效 直 到 用 下 面 描 述 的 trace vdelete 命 令 删 除 这 个 跟 踪 、 直 到 删 除 了 这 个 变 量 , 或 直 到 删 除 了 这 个 解 释 器 为 止 。 删 除 数 组 的 一 个 元 素 将 删 除 在 这 个 元 素 上 的 任 何 跟 踪 , 但 不 删 除 在 整 个 数 组 上 的 跟 踪 。 这 个 命 令 返 回 一 个 空 串 。

trace vdelete name ops command 如 果 在 变 量 name 上 设 置 了 一 个 用 ops 给 出 操 作 和 用 command 给 出 命 令 的 跟 踪 , 则 删 除 这 个 跟 踪 , 这 样 将 永 不 再 次 调 用 command 。 返 回 一 个 空 串 。
trace vinfo
name 返 回 一 个 列 表 , 为 每 个 在 变 量 name 设 置 的 当 前 跟 踪 包 含 一 个 元 素 。 这 个 列 表 的 每 个 元 素 自 身 是 一 个 包 含 两 个 元 素 的 列 表 , 它 们 是 与 这 个 跟 踪 相 关 的 opscommand 。 如 果 name 不 存 在 或 没 有 跟 踪 设 置 , 则 命 令 的 结 果 是 一 个 空 串 。

关 键 字 KEYWORDS

read, variable, write, trace, unset

[中 文 版 维 护 人 ]

寒 蝉 退 士

[中 文 版 最 新 更 新 ]

2001/11/21

《 中 国 Linux 论 坛 man 手 册 页 翻 译 计 划 》 :

http://cmpp.linuxforum.net

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh