KDB 内核调试器

KDB 内核调试器在使用前必须由用户手动启用,但它已被静态编译到AIX®内核中,并始终处于加载状态。 启用后, KDB 内核调试器可以由用户手动调用,也可以由系统自动调用,以响应某些条件 (例如,内核代码中未处理的异常)。

KDB 内核调试器始终装入到固定内存的特殊区域中,其中有效地址空间等于实际地址空间。 KDB 内核调试器在关闭内存转换的情况下运行。 这允许它运行,即使 VMM 子系统尚未初始化或关键的 VMM 结构已损坏。 但是, KDB 内核调试器可以执行与处理器通常执行的地址转换相同的地址转换。 当处理器关闭其内存转换时,这允许用户按有效地址查看数据。

当 KDB 内核调试器由条件调用时,它是唯一正在运行的程序。 停止所有其他进程,并禁用处理器中断。 其中一个处理器被指定为调试处理器,并且该处理器运行 KDB 内核调试器。 通常,这是发生异常活动的处理器 (例如,未处理的异常)。

如果用户手动调用了 KDB 内核调试器,那么将任意选择调试处理器。 KDB 内核调试器通过向每个处理器发送处理器间中断 (IPI) 来停止系统中的所有其他处理器。 如果这些处理器中的任何一个都无法停止,那么 KDB 内核调试器将显示一条警告消息。 例如,如果处理器在禁用中断的情况下在锁定上旋转,那么它无法处理 KDB 内核调试器发送的 IPI。

KDB 内核调试器大多是自包含的,不依赖于其他内核组件,例如网络和视频驱动程序。 KDB 内核调试器使用其自己的机器状态保存区域 (mst) 和特殊堆栈运行。 这需要在 KDB 内核调试器中复制一些内核代码。 复制允许开发者从内核代码中的几乎任何位置进行调试。 除非通过系统停止进入 KDB 内核调试器,否则当开发人员退出 KDB 内核调试器时,处理器将恢复正常运行,并重新启用中断。

当调用它时, KDB 内核调试器将控制逻辑分区系统上的虚拟终端 (vterm) ,或非逻辑分区系统上的物理 RS232 串口。 这需要 Hardware Management Console (HMC) 访问与正在调试的系统上的串口连接的 vterm 或另一个系统。 KDB 内核调试器需要该连接才能将消息发送到开发者。

可用于 KDB 内核调试器和 kdb 命令的子命令的完整列表包含在 子命令列表中。