Udostępnij przez


Wprowadzenie do silnika debugera

W tej dokumentacji opisano sposób używania silnika debugera i pisania rozszerzeń, które będą uruchamiane w WinDbg, KD, CDB i NTSD. Te rozszerzenia debugera mogą być używane podczas debugowania w trybie użytkownika lub w trybie jądra w systemie Microsoft Windows.

Silnik debuggera

Silnik debugera zapewnia interfejs do badania i manipulowania obiektami debugowania w trybie użytkownika i trybie jądra w systemie Microsoft Windows.

Aparat debugera może uzyskiwać obiekty docelowe, ustawiać punkty przerwania, monitorować zdarzenia, symbole zapytania, odczytywać i zapisywać pamięć oraz kontrolować wątki i procesy w obiekcie docelowym.

Silnik debuggera umożliwia tworzenie zarówno bibliotek rozszerzeń debuggera, jak i aplikacji autonomicznych. Takie aplikacje to aplikacje aparatu debugera. Aplikacja silnika debugera korzystająca z pełnej funkcjonalności silnika debugera to debugger. Na przykład WinDbg, CDB, NTSD i KD to debugery; silnik debugera dostarcza sedna ich funkcjonalności.

Interfejs API silnika debugera jest określany przez prototypy zdefiniowane w pliku nagłówkowym dbgeng.h.

Niekompletna dokumentacja

Jest to wstępny dokument i jest obecnie niekompletny.

W przypadku wielu pojęć związanych z debugerami i aparatem debugera, które nie zostały jeszcze udokumentowane tutaj, zapoznaj się z sekcją Techniki debugowania w tej dokumentacji.

Aby uzyskać niektóre z aktualnie nieudokumentowanych funkcji interfejsu API aparatu debugera, użyj metody Execute , aby wykonać poszczególne polecenia debugera.

rozszerzenia

Możesz utworzyć własne polecenia debugowania, pisząc i kompilując bibliotekę DLL rozszerzenia. Na przykład możesz napisać polecenie rozszerzenia, aby wyświetlić złożoną strukturę danych.

Istnieją trzy różne typy bibliotek DLL rozszerzeń debugera:

  • biblioteki DLL rozszerzeń DbgEng. Są one oparte na prototypach w pliku nagłówkowym dbgeng.h. Każda biblioteka DLL tego typu może eksportować polecenia rozszerzenia DbgEng. Te komendy rozszerzenia używają interfejs API Debugger Engine i mogą również używać interfejs API WdbgExts.

  • biblioteki DLL rozszerzeń EngExtCpp. Są one oparte na prototypach w plikach nagłówkowych engextcpp.h i dbgeng.h. Każda biblioteka DLL tego typu może eksportować polecenia rozszerzenia DbgEng. Te polecenia rozszerzeń używają zarówno interfejsu API Engine Debuggera, jak i platformy rozszerzeń EngExtCpp, i mogą również używać interfejsu API WdbgExts.

  • biblioteki DLL rozszerzenia WdbgExts. Są one oparte na prototypach w pliku nagłówkowym wdbgexts.h. Każda biblioteka DLL tego typu eksportuje co najmniej jedno polecenie rozszerzenia WdbgExts. Te polecenia rozszerzenia używają wyłącznie interfejsu API WdbgExts.

Interfejs API DbgEng może służyć do tworzenia rozszerzeń lub aplikacji autonomicznych. Interfejs API WdbgExts obejmuje podzbiór funkcjonalności interfejsu API silnika debugera i może być używany wyłącznie przez rozszerzenia.

Wszystkie rozszerzenia debugera powinny być kompilowane i budowane przy użyciu narzędzia Build. Narzędzie build jest dołączone do zestawu Windows Driver Kit (WDK).

Przykłady kodu rozszerzeń są instalowane jako część pakietu Narzędzia debugowania dla systemu Windows, jeśli wykonasz instalację niestandardową i wybierzesz składnik SDK oraz wszystkie jego podkomponenty. Można je znaleźć w podkatalogu sdk\samples w katalogu instalacyjnym Narzędzia debugowania dla systemu Windows.

Najprostszym sposobem na napisanie nowych rozszerzeń debugera jest zbadanie przykładowych rozszerzeń. Każde przykładowe rozszerzenie zawiera pliki makefile i sources do użycia z narzędziem kompilacji. Oba typy rozszerzeń są reprezentowane w przykładach.

pisanie rozszerzeń debugera analizy niestandardowej

Możliwości !analizuj polecenie debugera można rozszerzyć, pisząc wtyczkę rozszerzenia analizy. Udostępniając wtyczkę rozszerzenia analizy, możesz uczestniczyć w analizie sprawdzania usterek lub wyjątku w sposób specyficzny dla własnego składnika lub aplikacji. Podczas pisania wtyczki rozszerzenia analizy należy również napisać plik metadanych opisujący sytuacje, w których wtyczka ma być wywoływana. Po uruchomieniu !analizuj, lokalizuje, ładuje i uruchamia odpowiednie wtyczki rozszerzenia analizy. Aby uzyskać więcej informacji, zobacz Pisanie rozszerzeń debugera analizy niestandardowej

Dostosowywanie danych wyjściowych debugera przy użyciu języka DML

Dane wyjściowe debugera można dostosować przy użyciu języka DML. Aby uzyskać więcej informacji, zobacz Dostosowywanie danych wyjściowych debugera przy użyciuDML.

rozszerzanie możliwości debugera przy użyciu języka JavaScript

Użyj języka JavaScript, aby utworzyć skrypty, które rozumieją obiekty debugera i rozszerzają i dostosowują możliwości debugera. Dostawcy języka JavaScript łączą język skryptowy z wewnętrznym modelem obiektów debugera. Dostawca skryptów debugera języka JavaScript umożliwia korzystanie z języka JavaScript z debugerem. Aby uzyskać więcej informacji, zobacz JavaScript Debugger Scripting.