基本 AML 调试

AMLI 调试器支持两种类型的专用命令: AMLI 调试器扩展AMLI 调试器命令

执行 AML 调试时,应仔细区分两种将在调试器命令窗口中显示的不同类型的提示:

  • 看到 kd> 提示符时,将控制内核调试器。 所有标准内核调试器命令和扩展都可用。 此外,AMLI 调试器扩展也可用。 这些扩展具有 !amli命令的语法。 AMLI 调试器命令在此模式下不可用。

  • 看到 AMLI (?有关) >提示的帮助,你正在控制 AMLI 调试器。 (使用 WinDbg 时,此提示将显示在调试器命令窗口的顶部窗格中,并且 输入> 提示将显示在底部窗格中。) 在此提示符中,可以输入任何 AMLI 调试器命令。 还可以输入任何 AMLI 调试器扩展;这些扩展不应以 !amli 作为前缀。 标准内核调试命令在此模式下不可用。

  • 如果根本看不到任何提示,则目标计算机正在运行。

在任何调试会话开始时,应使用 !amli set 扩展设置 AMLI 调试器选项。 详细跟踪errbrkon 选项也非常有用。 应考虑激活 spewon 选项。 有关详细信息,请参阅扩展参考页。

AMLI 调试器可通过多种方式处于活动状态:

  • 如果遇到 AML 代码中的断点,ACPI 将闯入 AMLI 调试器。

  • 如果在 AML 代码中发生严重错误或异常, (例如 int 3) ,ACPI 将闯入 AMLI 调试器。

  • 如果设置了 errbrkon 选项,则任何 AML 错误都会导致 ACPI 闯入 AMLI 调试器。

  • 如果要故意闯入 AMLI 调试器,请使用 !amli 调试器 扩展,然后使用 g (Go) 命令。 下次由解释器执行任何 AML 代码时,AMLI 调试器将接管。

在 AMLI 调试器提示符时,可以键入 q 以返回到内核调试器,或者键入 g 以恢复正常执行。

以下扩展对于 AML 调试特别有用:

  • !amli dns 扩展显示特定对象的 ACPI 命名空间、从属于该对象的命名空间树,甚至显示整个命名空间树。 此命令在确定特定命名空间对象是什么时特别有用 -- 无论是方法、fieldunit、设备还是其他类型的对象。

  • !amli 查找扩展采用任何命名空间对象的名称并返回其完整路径。

  • !amli u 扩展取消汇编 AML 代码。

  • !amli lc 扩展显示有关所有活动 ACPI 上下文的简短信息。

  • !amli r 扩展显示有关解释器的当前上下文的详细信息。 当检测到错误后 AMLI 调试器提示符出现时,这非常有用。

  • 可以在 AML 代码中设置和控制断点。 使用 !amli bp 设置断点, !amli bc 清除断点, !amli bd 禁用断点, !amli 将 重新启用断点,! amli bl 列出所有断点。

  • AMLI 调试器可以通过 AML 代码运行、执行步骤和跟踪。 使用 runpt 命令执行这些操作。

有关扩展和命令的完整列表,请参阅 使用 AMLI 调试器扩展 和使用 AMLI 调试器命令

另请参阅

AMLI 调试器