Udostępnij przez


Cele

Aparat debugera obsługuje debugowanie różnych typów obiektów docelowych, obiektów docelowych trybu użytkownika i obiektów docelowych trybu jądra, obiektów docelowych na żywo i plików zrzutu awaryjnego oraz miejsc docelowych lokalnych i zdalnych. Istnieją różne metody łączenia silnika z tymi różnymi typami obiektów docelowych.

Pliki zrzutu pamięci

Zarówno zrzuty awaryjne trybu użytkownika, jak i trybu jądra są otwierane za pomocą funkcji OpenDumpFile. Silnik może również tworzyć pliki zrzutu z celu za pomocą WriteDumpFile2.

Live, User-Mode Targets

Silnik debugowania może zarówno tworzyć, jak i dołączać do procesów w trybie użytkownika.

Tworzenie procesu odbywa się przez podanie wiersza polecenia i opcjonalnie początkowego katalogu i środowiska dla nowego procesu. Silnik może następnie nawiązać połączenie z nowym procesem lub utrzymać nowy proces w zawieszeniu, gdy nawiązuje połączenie z innym procesem. Na przykład podczas debugowania aplikacji składającej się zarówno z klienta, jak i serwera można utworzyć klienta w stanie wstrzymania i dołączyć do już uruchomionego serwera, co umożliwia ustawienie punktów przerwania serwera przed uruchomieniem klienta i wywołanie operacji serwera.

Podczas odłączania się od procesu silnik może opcjonalnie pozostawić proces działający normalnie, zakończyć go lub porzucić (pozostawiając go w stanie zawieszenia, dopóki inny debuger nie dołączy do niego lub nie zostanie przerwany).

Aparat można odpytować o informacje o wszystkich procesach trybu użytkownika uruchomionych na komputerze, w tym o identyfikatorze procesu i nazwie obrazu wykonywalnego używanego do uruchomienia procesu. Te informacje mogą służyć do lokalizowania procesu debugowania.

Live, Kernel-Mode Targets

Metoda AttachKernel łączy aparat debugera z jądrem systemu Windows.

Zdalne obiekty docelowe

Podczas zdalnego używania modułu debugera mogą pojawić się dwa dodatkowe kroki:

  1. Połącz się z silnikiem hosta. Jeśli aparat hosta nie jest wystąpieniem aparatu lokalnego, użyj polecenia DebugConnect , aby utworzyć obiekt klienta połączony z aparatem hosta.

  2. Połącz silnik hosta z serwerem procesów lub serwerem połączeń z jądrem. Jeśli silnik hosta nie łączy się bezpośrednio z celem, musi nawiązać połączenie z serwerem procesów lub serwerem połączenia z jądrem, który to robi.

Teraz klient może poinformować silnik hosta, aby uzyskać element docelowy za pośrednictwem serwera procesów lub serwera połączeń jądra.

Uzyskiwanie obiektów docelowych

Podczas uzyskiwania obiektu docelowego pozyskiwanie elementu docelowego nie zostanie ukończone, dopóki element docelowy nie wygeneruje zdarzenia. Zazwyczaj oznacza to najpierw wywołanie metody w celu dołączenia debugera do obiektu docelowego, a następnie wywołanie metody WaitForEvent w celu wygenerowania zdarzenia przez element docelowy. To nadal ma zastosowanie, gdy elementem docelowym jest plik zrzutu awaryjnego, ponieważ zawsze przechowuje on zdarzenie – zazwyczaj to, które spowodowało utworzenie pliku zrzutu.

Dodatkowe informacje

Aby uzyskać szczegółowe informacje na temat łączenia się z celami, zobacz Łączenie z celami.