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