如果系统处于硬挂起状态,则不能中断调试程序。如果启用 deadman 功能,系统将出现紧急情况,而不是无限期挂起。您随后可以使用 kmdb(1) 内核调试程序来分析您的问题。
Deadman 功能每秒检查一次系统时钟是否正在更新。如果系统时钟未在更新,则表明您处于无限期的挂起状态中。如果系统时钟在 50 秒内未更新,则 deadman 功能将导致出现紧急情况并会将您置于调试程序中。
执行以下步骤以启用 deadman 功能:
确保正在使用 dumpadm(1M) 捕获崩溃映像。
在 /etc/system 文件中设置 snooping 变量。有关 /etc/system 文件的信息,请参见 system(4) 手册页。
set snooping=1
重新引导系统,以便再次读取 /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 命令调查时钟中断无法触发的原因并使系统时间提前。