Podstawowe debugowanie AML

Debuger AMLI obsługuje dwa typy wyspecjalizowanych poleceń: rozszerzenia debugera AMLI i polecenia debugera AMLI.

Podczas debugowania AML należy dokładnie rozróżnić dwa różne rodzaje monitów, które będą wyświetlane w oknie Polecenia debugera:

  • Po wyświetleniu monitu kd> kontrolujesz debuger jądra. Dostępne są wszystkie standardowe polecenia debugera jądra i rozszerzenia. Ponadto dostępne są również rozszerzenia debugera AMLI. Te rozszerzenia mają składnię !amlipolecenie. Polecenia debugera AMLI nie są dostępne w tym trybie.

  • Po ujrzeniu monitu AMLI(? w celu uzyskania pomocy)-> kontrolujesz debuger AMLI. (W przypadku używania programu WinDbg, ten znak zachęty pojawi się w górnym panelu okna Polecenia debugera, a w dolnym panelu pojawi się znak Wejściowy>). Z tego poziomu można wprowadzić dowolne polecenie debugera AMLI. Możesz również wprowadzić dowolne rozszerzenie debugera AMLI; te rozszerzenia nie powinny być poprzedzone prefiksem !amli. Standardowe polecenia debugowania jądra nie są dostępne w tym trybie.

  • Gdy w ogóle nie zostanie wyświetlony żaden monit, komputer docelowy jest uruchomiony.

Na początku każdej sesji debugowania należy ustawić opcje debugera AMLI z rozszerzeniem !amli set . Opcje verboseon, traceon i errbrkon są również bardzo przydatne. Należy rozważyć aktywowanie opcji spewon . Aby uzyskać szczegółowe informacje, zobacz stronę referencyjną rozszerzenia.

Istnieje kilka sposobów, aby debuger AMLI stał się aktywny:

  • Jeśli napotkano punkt przerwania w kodzie AML, interfejs ACPI uruchomi się w debuggerze AMLI.

  • Jeśli w kodzie AML wystąpi poważny błąd lub wyjątek (np. int 3), ACPI przełączy się do debugera AMLI.

  • Jeśli opcja errbrkon została ustawiona, każdy błąd AML spowoduje włamanie do debugera AMLI.

  • Jeśli chcesz celowo włamać się do debugera AMLI, użyj rozszerzenia debugera !amli, a następnie polecenia g (Go). Następnym razem, gdy dowolny kod AML zostanie wykonany przez interpreter, debuger AMLI przejmie kontrolę.

Po wyświetleniu monitu debugera AMLI możesz wpisać q , aby powrócić do debugera jądra, lub wpisać g , aby wznowić normalne wykonywanie.

Następujące rozszerzenia są szczególnie przydatne do debugowania AML:

  • Rozszerzenie !amli dns wyświetla przestrzeń nazw ACPI dla określonego obiektu, drzewo przestrzeni nazw podrzędne względem tego obiektu, a nawet całe drzewo przestrzeni nazw. To polecenie jest szczególnie przydatne podczas określania, jaki jest konkretny obiekt przestrzeni nazw — niezależnie od tego, czy jest to metoda, fieldunit, urządzenie, czy inny typ obiektu.

  • Rozszerzenie !amli find przyjmuje nazwę dowolnego obiektu przestrzeni nazw i zwraca pełną ścieżkę.

  • Rozszerzenie !amli u deasembluje kod AML.

  • Rozszerzenie !amli lc wyświetla krótkie informacje o wszystkich aktywnych kontekstach ACPI.

  • Rozszerzenie !amli r wyświetla szczegółowe informacje o bieżącym kontekście interpretera. Jest to przydatne, gdy zostanie wyświetlony monit debugera AMLI po wykryciu błędu.

  • Punkty przerwania można ustawiać i kontrolować w kodzie AML. Użyj !amli bp , aby ustawić punkt przerwania, !amli bc , aby wyczyścić punkt przerwania, !amli bd wyłączyć punkt przerwania, !amli być ponownie włączyć punkt przerwania, i !amli bl , aby wyświetlić listę wszystkich punktów przerwania.

  • Debuger AMLI umożliwia uruchamianie, przechodzenie krokowe i śledzenie kodu AML. Użyj poleceń run, p i t , aby wykonać te akcje.

Aby uzyskać pełną listę rozszerzeń i poleceń, zobacz Korzystanie z rozszerzeń debugera AMLI i Korzystanie z poleceń debugera AMLI.

Zobacz też

Debugger AMLI