Udostępnij za pośrednictwem


ICorDebugThread::SetDebugState — Metoda

Ustawia flagi opisujące stan debugowania tego elementu ICorDebugThread.

Składnia

HRESULT SetDebugState (
    [in] CorDebugThreadState state
);

Parametry

state [in] Bitowa kombinacja wartości wyliczenia CorDebugThreadState, które określają stan debugowania tego wątku.

Uwagi

SetDebugState Ustawia bieżący stan debugowania wątku. (Bieżący stan debugowania reprezentuje stan debugowania, jeśli proces miał być kontynuowany, a nie rzeczywisty bieżący stan). Wartość normalna dla tej wartości to THREAD_RUN. Tylko debuger może mieć wpływ na stan debugowania wątku. Stany debugowania trwają w dalszym ciągu, więc jeśli chcesz zachować wątek THREAD_SUSPENDed przez wiele kontynuacji, możesz ustawić go raz i później nie trzeba się tym martwić. Wstrzymywanie wątków i wznawianie procesu może spowodować zakleszczenia, choć zwykle jest mało prawdopodobne. Jest to wewnętrzna jakość wątków i procesów i jest by-design. Debuger może asynchronicznie przerwać i wznowić wątki w celu przerwania zakleszczenia. Jeśli stan użytkownika wątku zawiera USER_UNSAFE_POINT, wątek może zablokować odzyskiwanie pamięci (GC). Oznacza to, że zawieszony wątek ma znacznie większą szansę na spowodowanie zakleszczenia. Może to nie mieć wpływu na zdarzenia debugowania, które już są umieszczone w kolejce. W związku z tym debuger powinien opróżnić całą kolejkę zdarzeń (wywołując element ICorDebugController::HasQueuedCallbacks) przed wstrzymaniem lub wznowieniem wątków. W przeciwnym razie może on pobierać zdarzenia w wątku, który uważa, że został już zawieszony.

Wymagania

Platformy: zobacz Wymagania systemowe.

Nagłówek: CorDebug.idl, CorDebug.h

Biblioteka: CorGuids.lib

Wersje programu .NET Framework: dostępne od wersji 1.0