Udostępnij przez


Monitorowanie zdarzeń

Aby zapoznać się z omówieniem zdarzeń w aparacie debugera, zobacz Zdarzenia.

Zdarzenia występujące w obiekcie docelowym lub silniku debugera mogą być monitorowane przy użyciu interfejsu IDebugEventCallbacks. Obiekt IDebugEventCallbacks może zostać zarejestrowany w kliencie przy użyciu polecenia SetEventCallbacks. Każdy klient może mieć tylko jeden obiekt IDebugEventCallbacks zarejestrowany w nim.

Kiedy obiekt IDebugEventCallbacks jest zarejestrowany przez klienta, silnik wywoła metodę obiektu IDebugEventCallbacks::GetInterestMask, aby określić, jakimi zdarzeniami obiekt jest zainteresowany. Do niego będą wysyłane tylko zdarzenia, w których interesuje się obiekt.

Dla każdego typu zdarzenia silnik wywołuje odpowiednią metodę wywołania zwrotnego w IDebugEventCallbacks. W przypadku zdarzeń dotyczących celu, wartość DEBUG_STATUS_XXX zwracana przez te wywołania określa, jak powinno przebiegać wykonanie celu. Silnik zbiera te wartości zwracane z każdego obiektu IDebugEventCallbacks, który wywołuje, i działa na tym, który ma najwyższy priorytet.

Zdarzenia z elementu docelowego, które domyślnie zatrzymują się na debugerze

Następujące zdarzenia domyślnie przerywają działanie debugera:

  • Zdarzenia punktu przerwania

  • Zdarzenia wyjątków (nie udokumentowane tutaj)

  • Błąd systemu

Zdarzenia z elementu docelowego, które domyślnie nie wywołują przerwania w debugerze

Następujące zdarzenia nie powodują domyślnego zatrzymania debugera:

  • Utwórz zdarzenie procesu

  • Zdarzenie zakończenia procesu

  • Utwórz zdarzenie wątku

  • Zdarzenie zakończenia wątku

  • Zdarzenie ładowania modułu

  • Zwalnianie zdarzenia modułu

Zmiany silnika wewnętrznego

Następujące elementy nie są rzeczywistymi zdarzeniami, lecz jedynie zmianami w silniku wewnętrznym:

  • Zmiana celu

  • Zmiana silnika

  • Zmiana symbolu silnika

  • Zmiana stanu sesji