!bpid
!bpid 확장은 대상 컴퓨터의 프로세스가 디버거에 침입하도록 요청하거나 사용자 모드 디버거를 대상 컴퓨터의 프로세스에 연결하도록 요청합니다.
!bpid [Options] PID
매개 변수
선택
이 명령의 추가 작업을 제어합니다.
Option의 유효한 값은 다음 표에 표시됩니다.
-a |
PID에서 지정한 프로세스에 새 사용자 모드 디버거를 연결합니다. 사용자 모드 디버거는 대상 컴퓨터에서 실행됩니다. |
-s |
PID에서 지정한 사용자 모드 프로세스에서 중단 바로 전에 WinLogon 프로세스에서 발생하는 중단점을 추가합니다. 이렇게 하면 사용자가 작업을 시도하기 전에 요청을 확인할 수 있습니다. |
-w |
대상 컴퓨터의 메모리에 요청을 저장합니다. 그러면 대상 시스템이 요청을 반복할 수 있지만 일반적으로 필요하지는 않습니다. |
PID
대상 컴퓨터에서 원하는 프로세스의 프로세스 ID를 지정합니다. 이를 사용하여 대상 컴퓨터 에서 사용자 모드 디버거를 제어하는 경우 PID 는 사용자 모드 디버거가 아닌 대상 애플리케이션의 프로세스 ID여야 합니다. 프로세스 ID는 일반적으로 10진수 형식으로 나열되므로 이 접두사를 0n으로 접두사로 지정하거나 16진수 형식으로 변환해야 할 수 있습니다.
DLL
Kdexts.dll
이 확장 명령은 x86 기반 x64 기반 대상 컴퓨터에서 지원됩니다.
설명
이 명령은 사용자 모드 디버거에서 커널 디버거로 입력 및 출력을 리디렉션할 때 특히 유용합니다. 사용자 모드 대상 애플리케이션이 사용자 모드 디버거에 침입하여 커널 디버거에서 입력을 요청합니다. 자세한 내용은 커널 디버거에서 사용자 모드 디버거 제어를 참조하세요.
이 명령이 다른 상황에서 사용되는 경우 사용자 모드 프로세스는 DbgBreakPoint를 호출 합니다. 일반적으로 커널 디버거로 직접 중단됩니다.
-s 옵션을 사용하면 지정된 프로세스에서 중단이 발생하기 직전에 WinLogon에서 중단이 발생합니다. 이는 WinLogon의 프로세스 컨텍스트 내에서 디버깅 작업을 수행하려는 경우에 유용합니다. 그런 다음 g(Go) 명령을 사용하여 두 번째 중단으로 이동할 수 있습니다.
이 확장을 실행하지 못할 수 있는 방법이 있습니다.
리소스 부족. !bpid 확장은 스레드를 대상 프로세스에 삽입하므로 시스템에 스레드를 만들 충분한 리소스가 있어야 합니다. -a 옵션을 사용하려면 !bpid -a가 대상 컴퓨터에서 디버거의 전체 인스턴스를 실행해야 하므로 더 많은 시스템 리소스가 필요합니다.
로더 잠금이 이미 유지되었습니다. !bpid 및 !bpid -a는 디버거에 침입하기 위해 대상 프로세스에서 스레드를 실행해야 합니다. 다른 스레드가 로더 잠금을 보유하고 있으면 !bpid 스레드를 실행할 수 없으며 디버거에 침입하지 못할 수 있습니다. 따라서 대상 프로세스에 사용할 수 있는 충분한 사용자 모드 메모리가 있을 때 !bpid가 실패하면 로더 잠금이 유지됩니다.
사용 권한이 없습니다. !bpid 확장 작업을 수행하려면 WinLogon에서 원격 스레드를 만들고 지정된 프로세스에 디버거를 연결할 수 있는 충분한 권한이 필요합니다.
ntsd.exe 액세스할 수 없습니다. 일반적으로 알려진 경로에서 ntsd.exe 찾을 수 없으면 !bpid가 적절한 PID를 설정하지 못합니다. ntsd.exe 기본적으로 Windows Vista에 포함되지 않습니다.