编写设备驱动程序

模块调试程序入门

mdb 为实现调试程序模块提供了大量编程 API,从而使驱动程序开发者可以实现自定义调试支持。mdb 调试程序还提供了许多可用功能,如命令行编辑、命令历史记录、输出页面调度程序和联机帮助。


注 –

不应再使用 adb 宏。该功能已被 mdb 中的 dcmd 替代。


mdb 调试程序提供了一组丰富的模块和 dcmd。借助这些工具,可以调试 Solaris 内核、任何关联的模块以及设备驱动程序。通过这些功能可以执行一些任务,如:

首先切换到崩溃目录,键入 mdb 并指定系统崩溃转储,如以下示例所示。


示例 22–9 针对崩溃转储调用 mdb


% cd /var/crash/testsystem
% ls
bounds     unix.0    vmcore.0
% mdb unix.0 vmcore.0
Loading modules: [ unix krtld genunix ufs_log ip usba s1394 cpc nfs ]
> ::status
debugging crash dump vmcore.0 (64-bit) from testsystem
operating system: 5.10 Generic (sun4u)
panic message: zero
dump content: kernel pages only

mdb> 提示符进行响应时,便可运行命令。

要检查实时系统中正在运行的内核,请按如下所示从系统提示符处运行 mdb


示例 22–10 针对正在运行的内核调用 mdb


# mdb -k
Loading modules: [ unix krtld genunix ufs_log ip usba s1394 ptm cpc ipc nfs ]
> ::status
debugging live kernel (64-bit) on testsystem
operating system: 5.10 Generic (sun4u)