ICorDebugThread::SetDebugState 메서드

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

구문

HRESULT SetDebugState (  
    [in] CorDebugThreadState state  
);  

매개 변수

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

설명

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

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: CorDebug.idl, CorDebug.h

라이브러리: CorGuids.lib

.NET Framework 버전: 1.0부터 사용 가능