次の方法で共有


AML デバッグの基本

AMLI デバッガーでは、AMLI デバッガー拡張コマンドAMLI デバッガー コマンドの 2 種類の特殊なコマンドがサポートされています。

AML デバッグを実行するときは、デバッガー コマンド ウィンドウに表示される 2 種類のプロンプトを慎重に区別する必要があります。

  • kd> プロンプトでは、カーネル デバッガーを制御します。 すべての標準的なカーネル デバッガー コマンドと拡張コマンドを使用できます。 さらに、AMLI デバッガー拡張コマンドも使用できます。 これらの拡張機能には、 !amli command の構文があります。 AMLI デバッガー コマンドは、このモードでは使用できません。

  • AMLI(? for help)-> プロンプトが表示されるときは、AMLI デバッガーを制御しています。 (WinDbg を使用する場合、このプロンプトは デバッガー コマンド ウィンドウの上部ウィンドウに表示され、Input> プロンプトが下部のウィンドウに表示されます)。このプロンプトから、任意の AMLI デバッガー コマンドを入力できます。 AMLI デバッガー拡張コマンドを入力することもできます。これらの拡張コマンドの前に !amli を付けることはできません。 標準的なカーネル デバッグ コマンドは、このモードでは使用できません。

  • ターゲット コンピューターの実行中は、プロンプトが一切表示されません。

デバッグ セッションの開始時に、AMLI デバッガーのオプションを !amli set 拡張コマンドで設定する必要があります。 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デバッガー