다음을 통해 공유


ICorDebugThread::SetDebugState 메서드

이 ICorDebugThread의 디버깅 상태를 설명하는 플래그를 설정합니다.

Syntax

HRESULT SetDebugState (
    [in] CorDebugThreadState state
);

매개 변수

state [in] 이 스레드의 디버깅 상태를 지정하는 CorDebugThreadState 열거형 값의 비트 조합입니다.

비고

SetDebugState 는 스레드의 현재 디버그 상태를 설정합니다. ("현재 디버그 상태"는 프로세스가 실제 현재 상태가 아니라 계속되어야 하는 경우 디버그 상태를 나타냅니다.) 이 값의 일반 값은 THREAD_RUN. 디버거만 스레드의 디버그 상태에 영향을 줄 수 있습니다. 디버그 상태는 계속해서 지속되므로 스레드를 여러 THREAD_SUSPENDed 계속 유지하려는 경우 한 번 설정할 수 있으며 그 후에는 걱정할 필요가 없습니다. 스레드를 일시 중단하고 프로세스를 다시 열면 교착 상태가 발생할 수 있지만 일반적으로는 그렇지 않습니다. 이는 스레드 및 프로세스의 본질적인 품질이며 설계에 따라 다릅니다. 디버거는 스레드를 비동기적으로 중단시키고 다시 시작하여 교착 상태를 깨뜨릴 수 있습니다. 스레드의 사용자 상태에 USER_UNSAFE_POINT 포함된 경우 스레드가 GC(가비지 수집)를 차단할 수 있습니다. 즉, 일시 중단된 스레드가 교착 상태를 일으킬 가능성이 훨씬 높습니다. 이는 이미 큐에 대기 중인 디버그 이벤트에 영향을 미치지 않을 수 있습니다. 따라서 디버거는 스레드를 일시 중단하거나 다시 시작하기 전에 전체 이벤트 큐( ICorDebugController::HasQueuedCallbacks를 호출)를 드레이닝해야 합니다. 그렇지 않으면 스레드에서 이미 일시 중단된 것으로 판단되는 이벤트를 가져올 수 있습니다.

요구 사항

플랫폼:.NET 지원 운영 체제를 참조하세요.

머리글: CorDebug.idl, CorDebug.h

도서관: CorGuids.lib

.NET 버전: .NET Framework 1.0 이후 사용 가능