기본 AML 디버깅
AMLI 디버거는 AMLI 디버거 확장 및 AMLI 디버거 명령이라는 두 가지 유형의 특수화된 명령을 지원합니다.
AML 디버깅을 수행할 때는 디버거 명령 창에 표시되는 두 가지 종류의 프롬프트를 신중하게 구분해야 합니다.
kd> 프롬프트가 표시되면 커널 디버거를 제어합니다. 모든 표준 커널 디버거 명령 및 확장을 사용할 수 있습니다. 또한 AMLI 디버거 확장도 사용할 수 있습니다. 이러한 확장에는 !amli 명령 구문 이 있습니다. AMLI 디버거 명령은 이 모드에서 사용할 수 없습니다.
AMLI(? 도움말)> 프롬프트가 표시되면 AMLI 디버거를 제어합니다. (WinDbg를 사용하는 경우 이 프롬프트는 디버거 명령 창의 위쪽 창에 표시되고 입력> 프롬프트가 아래쪽 창에 나타납니다.) 이 프롬프트에서 AMLI 디버거 명령을 입력할 수 있습니다. AMLI 디버거 확장을 입력할 수도 있습니다. 이러한 확장에는 !amli 접두사를 지정하면 안 됩니다. 이 모드에서는 표준 커널 디버깅 명령을 사용할 수 없습니다.
프롬프트가 전혀 표시되지 않으면 대상 컴퓨터가 실행 중입니다.
디버깅 세션이 시작될 때는 !amli 집합 확장을 사용하여 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 코드를 통해 실행, 단계 및 추적할 수 있습니다. 실행, p 및 t 명령을 사용하여 이러한 작업을 수행합니다.
확장 및 명령의 전체 목록은 AMLI 디버거 확장 및 AMLI 디버거 명령 사용을 참조하세요.