目标是指调试器正在检查的程序。 目前 MDB 提供了对以下目标类型的支持:
用户进程
用户进程核心转储文件
没有内核执行控制的实时操作系统(通过 /dev/kmem 和 /dev/ksyms)
具有内核执行控制的实时操作系统(通过 kmdb(1))
操作系统崩溃转储
在操作系统崩溃转储内记录的用户进程映像
ELF 目标文件
原始数据文件
每个目标都导出标准属性集,包括一个或多个地址空间、一个或多个符号表、一组装入对象和一组线程。图 2–1 概述了 MDB 体系结构,包括两个内置目标和一对样例模块。
在 MDB 术语中,调试器命令又名 dcmd(读作 dee-command),是调试器中能够访问当前目标的任何属性的例程。 MDB 解析标准输入中的命令,然后执行对应的 dcmd。 每个 dcmd 还可以接受字符串或数值参数的列表,如语法所示。MDB 包含一组始终可用的内置 dcmd(在第 5 章,内置命令中介绍)。 通过使用 MDB 附带的编程 API 编写 dcmd,程序员还可以扩展 MDB 本身的功能。
walker 是说明如何遍历或迭代特定程序数据结构的元素的一组例程。 walker 从 dcmd 和从 MDB 本身封装数据结构的实现。 可以交互使用 walker,或者将它们用作元语以生成其他 dcmd 或 walker。 与使用 dcmd 一样,程序员可以通过将其他 walker 作为调试器模块的一部分进行实现来扩展 MDB。
调试器模块又名 dmod(读作 dee-mod),是包含一组 dcmd 和 walker 的动态装入的库。 在初始化过程中,MDB 尝试装入与目标中存在的装入对象对应的 dmod。 随后可以在运行 MDB 时随时装入或卸载 dmod。 MDB 提供了一组标准 dmod,用于调试 Solaris 内核。
宏文件是包含一组要执行的命令的文本文件。宏文件通常用于自动执行显示简单数据结构的过程。 MDB 提供了完全的向后兼容性以执行为 adb 编写的宏文件。 因此,Solaris 安装附带的一组宏文件可以与任一工具一起使用。