다음을 통해 공유


비침범성 디버깅(사용자 모드)

사용자 모드 애플리케이션이 이미 실행 중인 경우 디버거는 이 애플리케이션을 비침범적으로 디버그할 수 있습니다. 비침범성 디버깅을 사용하면 디버깅 작업이 많지 않습니다. 그러나 대상 애플리케이션에 대한 디버거의 간섭을 최소화할 수 있습니다. 비침범성 디버깅은 대상 애플리케이션이 응답을 중지한 경우에 유용합니다.

비침범성 디버깅에서는 디버거가 실제로 대상 애플리케이션에 연결되지 않습니다. 디버거는 대상의 모든 스레드를 일시 중단하고 대상의 메모리, 레지스터 및 기타 정보에 액세스할 수 있습니다. 그러나 디버거는 대상을 제어할 수 없으므로 g(Go)와 같은 명령은 작동하지 않습니다.

비침범성 디버깅 중에 허용되지 않는 명령을 실행하려고 하면 "디버거가 연결되지 않았으므로 프로세스 실행을 모니터링할 수 없습니다."라는 오류 메시지가 표시됩니다.

디버그할 프로세스 선택

PID(프로세스 ID) 또는 프로세스 이름으로 대상 애플리케이션을 지정할 수 있습니다.

애플리케이션을 이름으로 지정하는 경우 파일 이름 확장명을 포함하여 프로세스의 전체 이름을 사용해야 합니다. 두 프로세스의 이름이 같은 경우 프로세스 ID를 대신 사용해야 합니다.

프로세스 ID 및 프로세스 이름을 확인하는 방법에 대한 자세한 내용은 프로세스 ID 찾기를 참조하세요.

비침범성 디버깅 세션을 시작하고 중지하는 방법에 대한 자세한 내용은 다음 항목을 참조하세요.

CDB 명령줄

CDB 명령줄에서 실행 중인 프로세스를 비침공적으로 디버그하려면 다음 구문에서 -pv 옵션, -p 옵션 및 프로세스 ID를 지정합니다.

cdb -pv -p ProcessID

또는 프로세스 이름을 지정하여 실행 중인 프로세스를 비침공적으로 디버그하려면 대신 다음 구문을 사용합니다.

cdb -pv -pn ProcessName

다른 몇 가지 유용한 명령줄 옵션이 있습니다. 명령줄 구문에 대한 자세한 내용은 CDB 명령줄 옵션을 참조 하세요.

WinDbg 명령줄

WinDbg 명령줄에서 실행 중인 프로세스를 비인가적으로 디버그하려면 다음 구문에서 -pv 옵션, -p 옵션 및 프로세스 ID를 지정합니다.

windbg -pv -p ProcessID

또는 프로세스 이름을 지정하여 실행 중인 프로세스를 비침공적으로 디버그하려면 대신 다음 구문을 사용합니다.

windbg -pv -pn ProcessName

다른 몇 가지 유용한 명령줄 옵션이 있습니다. 명령줄 구문에 대한 자세한 내용은 WinDbg 명령줄 옵션을 참조 하세요.

WinDbg 메뉴

WinDbg가 휴면 모드인 경우 파일 메뉴에서 프로세스에 첨부를 클릭하거나 F6 키를 눌러 실행 중인 프로세스를 비침공적으로 디버그할 수 있습니다.

프로세스에 연결 대화 상자가 나타나면 비침용성 확인란을 선택합니다. 그런 다음, 원하는 프로세스 ID와 이름을 포함하는 줄을 선택합니다. 프로세스 ID 상자에 프로세스 ID를 입력할 수도 있습니다. 마지막으로 확인을 클릭합니다.

디버거 명령 창

디버거가 이미 활성 상태인 경우 디버거 명령 창에서 .attach -v(프로세스에 연결) 명령을 사용하여 실행 중인 프로세스를 비침범적으로 디버그할 수 있습니다.

디버거가 이미 하나 이상의 프로세스를 침략적으로 디버깅하는 경우 .attach 명령을 사용할 수 있습니다. 유휴 상태이지만 유휴 WinDbg에는 없는 경우 CDB에서 이 명령을 사용할 수 있습니다.

.attach -v 명령이 성공하면 디버거는 다음에 디버거가 실행 명령을 실행할 때 지정된 프로세스를 디버그합니다. 비침범성 디버깅 중에는 실행이 허용되지 않으므로 디버거는 한 번에 둘 이상의 프로세스를 비침범적으로 디버그할 수 없습니다. 또한 이 제한은 .attach -v 명령을 사용하면 기존의 침습적 디버깅 세션이 덜 유용할 수 있음을 의미합니다.

디버깅 세션 시작

디버깅 세션을 시작하는 방법에 대한 자세한 내용은 디버거 작업을 참조하세요.