基本 AML 调试

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

执行 AML 调试时,应仔细区分“调试器命令”窗口出现的两种不同提示:

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

  • 当看到 AMLI(? for help)-> 提示时,表明您正在控制 AMLI 调试器。 (使用 WinDbg 时,此提示将显示在调试器命令窗口的顶部窗格中,同时输入> 提示将显示在底部窗格中。)在此提示下,可以输入任何 AMLI 调试器命令。 还可以输入任何 AMLI 调试器扩展;这些扩展不应将 !amli 作为前缀。 标准内核调试命令在此模式下不可用。

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

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

AMLI 调试器有多种激活方式:

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

  • 如果 AML 代码(如 int 3)中出现严重错误或异常,ACPI 将进入 AMLI 调试器。

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

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

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

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

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

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

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

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

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

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

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

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

另请参阅

AMLI 调试器