Udostępnij przez


Interfejsy API do programowania rozszerzeń debugera

Ta sekcja zawiera następujące elementy:

Omówienie aparatu debugera

korzystanie z interfejsu API aparatu debugera

pisanie rozszerzeń DbgEng

rozszerzenia EngExtCpp

pisanie rozszerzeń WdbgExts

dostosowywanie danych wyjściowych debugera przy użyciu DML

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

Opracowywanie modułów rozszerzalności transportu KDNET

W tej dokumentacji opisano sposób używania interfejsów, takich jak te udostępniane przez aparat debugera do zapisywania rozszerzeń, które będą uruchamiane w systemach WinDbg, KD, CDB i NTSD. Te rozszerzenia debugera mogą być używane podczas debugowania w trybie użytkownika lub w trybie jądra.

aparat debugera

Aparat debugera udostępnia interfejs do badania obiektów docelowych debugowania i manipulowania nimi w trybie użytkownika i trybie jądra.

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.

Aparat debugera umożliwia pisanie zarówno bibliotek rozszerzeń debugera, jak i aplikacji autonomicznych. Takie aplikacje to aplikacje aparatu debugera. Aplikacja aparatu debugera korzystająca z pełnej funkcjonalności aparatu debugera to debuger. Na przykład WinDbg, CDB, NTSD i KD są debugerami; aparat debugera zapewnia podstawowe funkcje.

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

Aby uzyskać więcej informacji, zobacz Debugger Engine Overview and Using the Debugger Engine API.

rozszerzenia

Możesz utworzyć własne polecenia debugowania, pisząc i tworzą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 polecenia rozszerzenia używają interfejsu API aparatu debugera i mogą również używać interfejsu API WdbgExts.

    Aby uzyskać więcej informacji, zobacz Writing DbgEng Extensions.

  • bibliotek 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 rozszerzenia używają zarówno interfejsu API aparatu debugera, jak i platformy rozszerzenia EngExtCpp, a także mogą 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. Aby uzyskać więcej informacji, zobacz Zapisywanie rozszerzeń WdbgExts.

Interfejs API DbgEng może służyć do tworzenia rozszerzeń lub aplikacji autonomicznych. Interfejs API WdbgExts zawiera podzbiór funkcji interfejsu API aparatu debugera i może być używany tylko przez rozszerzenia.

Wszystkie rozszerzenia debugera powinny być kompilowane i kompilowane przy użyciu programu Visual Studio.

Przykłady kodu rozszerzenia są instalowane jako część pakietu Debugowanie dla systemu Windows, jeśli wykonasz instalację niestandardową i wybierzesz składnik zestawu SDK oraz wszystkie jego składniki podrzędne. 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.

Opracowywanie modułów rozszerzalności transportu KDNET

Transport KDNET można rozszerzyć tak, aby działał na dowolnym sprzęcie, korzystając z oddzielnej biblioteki DLL modułu rozszerzalności sterownika sprzętowego. Moduły rozszerzalności transportu KDNET są opracowywane przez dostawców kart sieciowych w celu dodania obsługi debugowania jądra do określonych kart sieciowych.

KDNET to transport debugowania jądra, który umożliwia debugowanie systemu Windows za pośrednictwem sieci. Jest ona zaprojektowana tak, aby warstwa obsługi sprzętu została wbudowana w oddzielny moduł od warstwy przetwarzania pakietów sieciowych i interfejsu jądra. Ta warstwa obsługi sterowników sprzętowych jest nazywana modułem rozszerzalności KDNET. Aby uzyskać więcej informacji, zobacz Develop KDNET transport extensibility modules.