다음을 통해 공유


프로세스 및 스레드 제어

사용자 모드 디버깅을 수행하는 경우 프로세스 및 스레드를 활성화, 표시, 고정, 고정 해제, 일시 중단 및 일시 중단 해제합니다.

현재 또는 활성 프로세스는 현재 디버그 중인 프로세스입니다. 마찬가지로 현재 또는 활성 스레드는 디버거가 현재 제어하는 스레드입니다. 많은 디버거 명령의 작업은 현재 프로세스 및 스레드의 ID에 따라 결정됩니다. 현재 프로세스는 디버거에서 사용하는 가상 주소 매핑도 결정합니다.

디버깅이 시작되면 현재 프로세스는 디버거가 연결되어 있거나 디버거에 발생한 예외를 발생시킨 프로세스입니다. 마찬가지로 현재 스레드는 디버거가 프로세스에 연결되었을 때 활성화되었거나 예외를 발생시킨 스레드입니다. 그러나 디버거를 사용하여 현재 프로세스와 스레드를 변경하고 개별 스레드를 고정하거나 고정 해제할 수 있습니다.

커널 모드 디버깅에서 프로세스 및 스레드는 이 섹션에 설명된 메서드에 의해 제어되지 않습니다. 커널 모드에서 프로세스와 스레드를 조작하는 방법에 대한 자세한 내용은 컨텍스트 변경을 참조하세요.

프로세스 및 스레드 표시

프로세스 및 스레드 정보를 표시하려면 다음 방법을 사용할 수 있습니다.

현재 프로세스 및 스레드 설정

현재 프로세스 또는 스레드를 변경하려면 다음 메서드를 사용할 수 있습니다.

스레드 고정 및 일시 중단

디버거는 스레드를 일시 중단 하거나 스레드를 동결하여 스레드 실행을 변경할 수 있습니다. 이 두 동작은 다소 다른 영향을 줍니다.

각 스레드에는 연결된 일시 중단 수가 있습니다. 이 개수가 하나 이상인 경우 시스템은 스레드를 실행하지 않습니다. 개수가 0 이하이면 시스템이 적절한 경우 스레드를 실행합니다.

일반적으로 각 스레드의 일시 중단 수는 0입니다. 디버거가 프로세스에 연결되면 해당 프로세스에 있는 모든 스레드의 일시 중단 횟수가 1씩 증가합니다. 디버거가 프로세스에서 분리되면 모든 일시 중단 횟수가 1씩 감소합니다. 디버거가 프로세스를 실행하면 일시 중단 횟수가 일시적으로 1씩 감소합니다.

다음 메서드를 사용하여 디버거에서 스레드의 일시 중단 수를 제어할 수 있습니다.

이러한 명령의 가장 일반적인 용도는 특정 스레드의 일시 중단 횟수를 1에서 2로 높이는 것입니다. 디버거가 프로세스에서 실행되거나 분리되면 프로세스의 다른 스레드가 실행되는 경우에도 스레드는 일시 중단 횟수가 1개이고 일시 중단된 상태로 유지됩니다.

비침범성 디버깅을 수행하는 경우에도 스레드를 일시 중단할 수 있습니다.

디버거는 스레드를 고정 할 수도 있습니다. 이 작업은 어떤 면에서 스레드를 일시 중단하는 것과 비슷합니다. 그러나 "frozen"은 디버거 설정일 뿐입니다. Windows 운영 체제의 어떤 것도 이 스레드와 다른 것을 인식하지 않습니다.

기본적으로 모든 스레드는 고정되지 않습니다. 디버거로 인해 프로세스가 실행되면 고정된 스레드는 실행되지 않습니다. 그러나 디버거가 프로세스에서 분리되는 경우 모든 스레드는 고정되지 않습니다.

개별 스레드를 고정하고 고정 해제하려면 다음 메서드를 사용할 수 있습니다.

어떤 경우에도 대상 프로세스에 속하는 스레드는 디버거가 대상으로 분할된 경우 실행되지 않습니다. 스레드의 일시 중단 횟수는 디버거가 프로세스를 실행하거나 분리할 때만 스레드의 동작에 영향을 줍니다. 고정된 상태 디버거가 프로세스를 실행할 때만 스레드의 동작에 영향을 줍니다.

다른 명령의 스레드 및 프로세스

다른 많은 명령 앞에 스레드 지정자를 추가하거나 지정자를 처리할 수 있습니다. 자세한 내용은 개별 명령 topics 참조하세요.

~e(스레드별 명령) 한정자를 여러 명령 및 확장 명령 앞에 추가할 수 있습니다. 이 한정자를 사용하면 지정된 스레드와 관련하여 명령이 실행됩니다. 이 한정자는 둘 이상의 스레드에 명령을 적용하려는 경우에 특히 유용합니다. 예를 들어 다음 명령은 디버그 중인 모든 스레드에 대해 !gle 확장 명령을 반복합니다.

~*e !gle 

여러 시스템

디버거는 동시에 여러 대상에 연결할 수 있습니다. 이러한 프로세스에 덤프 파일이 포함되거나 둘 이상의 컴퓨터에 라이브 대상이 포함되면 디버거는 각 작업에 대한 시스템, 프로세스 및 스레드를 참조합니다. 이러한 종류의 디버깅에 대한 자세한 내용은 여러 대상 디버깅을 참조하세요.