______________________________________________________________________________
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
Name1 和 name2 给 出 被 访 问 了 的 变 量 的 名 字 : 如 果 这 个 变 量 是 个 标 量 , 则 name1 给 出 变 量 的 名 字 而 name2 是 一 个 空 串 ; 如 果 变 量 是 一 个 数 组 元 素 , 则 name1 给 出 数 组 的 名 字 而 name2 给 出 在 这 个 数 组 中 的 索 引 ; 如 果 整 个 数 组 被 删 除 并 且 跟 踪 注 册 在 整 个 数 组 上 , 而 不 是 在 一 个 单 一 元 素 上 , 则 name1 给 出 这 个 数 组 的 名 字 而 name2 是 一 个 空 串 。 Name1 和 name2 不 是 必 须 与 在 trace variable 命 令 中 使 用 的 名 字 相 同 : upvar 命 令 允 许 一 个 过 程 在 不 同 的 名 字 下 引 用 一 个 变 量 。 Op 指 示 在 这 个 变 量 上 进 行 了 何 种 操 作 , 它 是 上 面 定 义 的 r、 w、 或 u 中 的 一 个 。
Command 在 与 调 用 跟 踪 操 作 的 代 码 的 相 同 的 上 下 文 中 执 行 : 如 果 被 访 问 的 变 量 是 一 个 Tcl 过 程 的 一 部 分 , 则 command 将 访 问 到 与 过 程 中 的 代 码 相 同 的 局 部 变 量 。 这 个 上 下 文 可 能 与 在 其 中 建 立 跟 踪 的 上 下 文 不 同 。 如 果 command 调 用 一 个 过 程 (它 经 常 这 么 做 ), 则 过 程 要 想 访 问 被 跟 踪 的 变 量 必 须 使 用 upvar 或 uplevel。 还 要 注 意 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 设
置 的 当 前 跟 踪
包 含 一 个 元 素
。 这 个 列 表 的
每 个 元 素 自 身
是 一 个 包 含 两
个 元 素 的 列 表
, 它 们 是 与 这
个 跟 踪 相 关 的
ops 和 command 。 如
果 name 不 存 在 或
没 有 跟 踪 设 置
, 则 命 令 的 结
果 是 一 个 空 串
。
关 键 字 KEYWORDS
read, variable, write, trace, unset
[中 文 版 维 护 人 ]
寒 蝉 退 士
[中 文 版 最 新 更 新 ]
2001/11/21
《 中 国 Linux 论 坛 man 手 册 页 翻 译 计 划 》 :
跋
本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh