Solaris 模块调试器指南

dcmd 和 Walker 名称解析

如上所述,每个 MDB dmod 都提供了一组 dcmd 和 walker。dcmd 和 walker 是在两个不同的全局名称空间中跟踪的。MDB 还跟踪与每个 dmod 关联的 dcmd 和 walker 名称空间。在给定 dmod 内不允许存在名称完全相同的 dcmd 或 walker:具有此类型命名冲突的 dmod 将无法装入。

在全局名称空间中,允许在不同 dmod 的 dcmd 或 walker 之间存在名称冲突。 如果存在冲突,则优先装入全局名称空间中具有该特定名称的第一个 dcmd 或 walker。替换定义按装入顺序保存在列表中。

可以将反引号字符 “`“ 用作 dcmd 或 walker 名称中的作用域运算符以选择替换定义。例如,如果 dmod m1m2 都提供了 dcmd d,而且 m1 是在 m2 之前装入的,则:

::d

执行 m1d 定义

::m1`d

执行 m1d 定义

::m2`d

执行 m2d 定义

如果当前卸载了模块 m1,则全局定义列表上的下一个 dcmd (m2`d) 将被提升为全局可见。可以使用 ::which dcmd 确定 dcmd 或 walker 的当前定义,如下所述。可以使用 ::which -v 选项显示全局定义列表。