Grundlegendes AML-Debugging
Der AMLI-Debugger unterstützt zwei Arten von spezialisierten Befehlen: AMLI-Debuggererweiterungen und AMLI-Debuggerbefehle.
Beim Ausführen des AML-Debuggings sollten Sie sorgfältig zwischen zwei verschiedenen Arten von Eingabeaufforderungen unterscheiden, die im Fenster "Debuggerbefehl" angezeigt werden:
Wenn die KD-Eingabeaufforderung> angezeigt wird, steuern Sie den Kerneldebugger. Alle standardmäßigen Kerneldebuggerbefehle und Erweiterungen sind verfügbar. Darüber hinaus sind die AMLI-Debuggererweiterungen ebenfalls verfügbar. Diese Erweiterungen weisen eine Syntax des Befehls !amli auf. Die AMLI-Debuggerbefehle sind in diesem Modus nicht verfügbar.
Wenn die AMLI(? für Hilfe)-> Eingabeaufforderung angezeigt wird, steuern Sie den AMLI-Debugger. (Wenn Sie WinDbg verwenden, wird diese Eingabeaufforderung im oberen Bereich des Debugger-Befehlsfensters und einer Die Eingabeaufforderung> wird im unteren Bereich angezeigt.) An dieser Eingabeaufforderung können Sie einen beliebigen AMLI-Debuggerbefehl eingeben. Sie können auch jede AMLI Debugger-Erweiterung eingeben; Diese Erweiterungen sollten nicht mit dem Präfix !amli versehen werden. Die standardmäßigen Kerneldebuggingbefehle sind in diesem Modus nicht verfügbar.
Wenn überhaupt keine Eingabeaufforderung angezeigt wird, wird der Zielcomputer ausgeführt.
Am Anfang jeder Debugsitzung sollten Sie die AMLI-Debuggeroptionen mit der Erweiterung "!amli set " festlegen. Auch die ausführlichen Optionen, Traceon und Errbrkon sind sehr nützlich. Sie sollten die Spewon-Option aktivieren. Details finden Sie auf der Erweiterungsreferenzseite.
Es gibt mehrere Möglichkeiten, wie der AMLI-Debugger aktiv werden kann:
Wenn ein Haltepunkt im AML-Code auftritt, wird ACPI in den AMLI-Debugger unterteilt.
Wenn ein schwerwiegender Fehler oder eine Ausnahme im AML-Code (z. B. int 3) auftritt, wird ACPI in den AMLI-Debugger unterteilt.
Wenn die Option "errbrkon " festgelegt wurde, führt jeder AML-Fehler dazu, dass ACPI in den AMLI-Debugger wechselt.
Wenn Sie absichtlich in den AMLI-Debugger umbrechen möchten, verwenden Sie die Erweiterung !amli debugger und dann den Befehl g (Go). Wenn jeder AML-Code das nächste Mal vom Dolmetscher ausgeführt wird, übernimmt der AMLI-Debugger die Übernahme.
Wenn Sie sich an der AMLI-Debuggeraufforderung befinden, können Sie q eingeben, um zum Kerneldebugger zurückzukehren, oder geben Sie g ein, um die normale Ausführung fortzusetzen.
Die folgenden Erweiterungen sind besonders nützlich für das AML-Debugging:
Die !amli-DNS-Erweiterung zeigt den ACPI-Namespace für ein bestimmtes Objekt, die Namespacestruktur, die diesem Objekt untergeordnet ist, oder sogar die gesamte Namespacestruktur an. Dieser Befehl ist besonders nützlich, um zu bestimmen, was ein bestimmtes Namespaceobjekt ist – unabhängig davon, ob es sich um eine Methode, eine Feldeinheit, ein Gerät oder einen anderen Objekttyp handelt.
Die Erweiterung "!amli find " verwendet den Namen eines beliebigen Namespaceobjekts und gibt den vollständigen Pfad zurück.
Die Erweiterung !amli u hebt den AML-Code auf.
Die !amli lc-Erweiterung zeigt kurze Informationen zu allen aktiven ACPI-Kontexten an.
Die Erweiterung !amli r zeigt detaillierte Informationen zum aktuellen Kontext des Dolmetschers an. Dies ist nützlich, wenn die AMLI-Debuggeraufforderung angezeigt wird, nachdem ein Fehler erkannt wurde.
Haltepunkte können im AML-Code festgelegt und gesteuert werden. Verwenden Sie !amli bp, um einen Haltepunkt festzulegen, !amli bc, um einen Haltepunkt zu löschen, !amli bd, um einen Haltepunkt zu deaktivieren, !amli, um einen Haltepunkt erneut zu aktivieren, und !amli bl, um alle Haltepunkte aufzulisten.
Der AMLI-Debugger kann im AML-Code ausgeführt, durchlaufen und nachverfolgen. Verwenden Sie die Befehle "Ausführen", "p" und "t ", um diese Aktionen auszuführen.
Eine vollständige Liste der Erweiterungen und Befehle finden Sie unter Verwenden von AMLI-Debuggererweiterungen und Verwenden von AMLI-Debuggerbefehlen.