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부터 사용 가능
.NET