编写设备驱动程序

启用 Deadman 功能以避免硬挂起

如果系统处于硬挂起状态,则不能中断调试程序。如果启用 deadman 功能,系统将出现紧急情况,而不是无限期挂起。您随后可以使用 kmdb(1) 内核调试程序来分析您的问题。

Deadman 功能每秒检查一次系统时钟是否正在更新。如果系统时钟未在更新,则表明您处于无限期的挂起状态中。如果系统时钟在 50 秒内未更新,则 deadman 功能将导致出现紧急情况并会将您置于调试程序中。

    执行以下步骤以启用 deadman 功能:

  1. 确保正在使用 dumpadm(1M) 捕获崩溃映像。

  2. /etc/system 文件中设置 snooping 变量。有关 /etc/system 文件的信息,请参见 system(4) 手册页。

    set snooping=1
  3. 重新引导系统,以便再次读取 /etc/system 文件,从而使 snooping 设置生效。

请注意,系统中的所有区域也都会继承 deadman 设置。

如果系统在启用 deadman 功能的情况下挂起,则应在控制台上看到类似如下示例的输出:

panic[cpu1]/thread=30018dd6cc0: deadman: timed out after 9 seconds of
clock inactivity

panic: entering debugger (continue to save dump)

在调试程序内,使用 ::cpuinfo 命令调查时钟中断无法触发的原因并使系统时间提前。