다음을 통해 공유


ICorDebugThread::SetDebugState 메서드

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

HRESULT SetDebugState (
    [in] CorDebugThreadState state
);

매개 변수

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

설명

SetDebugState는 스레드의 현재 디버그 상태를 설정합니다. "현재 디버그 상태"는 실제 현재 상태가 아니라 프로세스가 계속될 경우의 디버그 상태를 나타냅니다. 이 상태의 일반적인 값은 THREAD_RUNNING입니다. 디버거만이 스레드의 디버그 상태에 영향을 줄 수 있습니다. 디버그 상태는 여러 번의 Continue 요청 간에 지속되므로 프로세스에 대한 여러 번의 Continue 요청에서 스레드를 THREAD_SUSPEND 상태로 유지하려면 해당 값을 한 번만 설정하고 그 후에는 신경 쓰지 않아도 됩니다. 스레드를 일시 중단하고 프로세스를 다시 시작하면 일반적인 경우는 아니지만 교착 상태가 발생할 수도 있습니다. 이는 스레드와 프로세스의 본래 특성으로, 설계 시 의도된 것입니다. 디버거에서는 스레드를 비동기적으로 중단했다가 다시 시작하여 교착 상태를 해결할 수 있습니다. 스레드의 사용자 상태에 USER_UNSAFE_POINT가 포함되면 스레드에서 GC(가비지 수집)를 차단할 수 있습니다. 이는 일시 중단된 스레드일수록 교착 상태가 발생할 확률이 더 높다는 것을 의미합니다. 그러나 이미 큐에 대기 중인 디버그 이벤트에는 영향을 주지 않습니다. 따라서 디버거에서는 스레드를 일시 중단하거나 다시 시작하기 전에 ICorDebugController::HasQueuedCallbacks를 호출하여 전체 이벤트 큐를 비워야 합니다. 그렇지 않으면 이미 일시 중단된 것으로 간주된 스레드에서 이벤트가 발생할 수 있습니다.

요구 사항

플랫폼: .NET Framework 시스템 요구 사항 참조

헤더: CorDebug.idl, CorDebug.h

라이브러리: CorGuids.lib

.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

참고 항목

참조

ICorDebugThread 인터페이스

ICorDebugThread2 인터페이스