원문 : Debugging with Attach to Process - BlackWasp



Visual Studio는 프로그램을 디버깅 모드로 실행할 수 있게 한다. 또한 다양한 디버깅 툴을 지원하여 프로그램의 활동을 모니터링 할 수 있게 한다.


Attaching to a Process

이미 실행중인 프로세스에 Visual Studio를 연결할 수 있다!! 단, 몇가지 제약 조권이 있다.
- 해당 프로세스는 디버깅 모드로 컴파일된 어셈블리여야 한다. 
- 해당 프로세스 어셈블리 위치에 프로그램 데이터 베이스 파일(*.PDB) 이 있어야 한다.
- PDB 파일에서 참조하는 어셈블리의 소스 코드를 이용해야 한다.
- Visual Studio 가 프로세스 연결 기능을 지원해야 한다. Visual Studio Express 버전은 프로세스 연결 기능을 지원하지 않음.

위 조건을 만족하면 Visual Studio를 실행중인 프로세스에 연결할 수 있다. breakpoint 또는 tracepoint 를 이용하여 코드를 일시 중지 시켜 디버깅할 수 있다.


Show the Attach to Process Dialog Box

실행중인 프로레스를 디버깅 하기 위해서는 "Attach to Process (프로세스에 연결)" 대화상자를 불러와야 한다.
Visual Studio 메뉴 -> Debug -> "Attach to Process..."
*) 프로젝트를 연 상태가 아닐 경우에는 Debug 메뉴에서 찾을 수 없고, "Tools" 메뉴에서 찾을 수 있다.


대화상자의 "Available Processes" 에는 현재 사용자가 실행시킨 프로세스 리스트들이 보안다.
다른 사용자 권한으로 실행중인 프로세스를 디버깅 하기 위해선 하단의 "Show processes form all users" 체크박스에 체크하면 된다. 
프로세스 리스트는 실시간으로 보여주지는 않는다. "Refresh" 버튼으로 새로 고칠 수는 있다.

"Attach to:"  항목에는 연결하려는 프로세스의 타입이 나타난다.
Native code, Managed code 두가지가 존재한다.
연결하려는 프로세스를 선택하였을 경우 적절한 타입값으로 자동 설정되며 "Select" 버튼으로 설정해 줄 수 도 있다.

연결하려는 프로세스를 선택한 후 "Attach" 버튼을 누르면 해당 프로세스에 연결하게 된다. Visual Studio가 현재 디버깅중인 상태라면 디버깅에 필요한 컨트롤들이 보인다. 

디버깅을 다 하였다면 직접 Process 창(Debug메뉴 -> Window)에서 연결끊기를 선택해줄 수 있다. 간단하게 프로세스에서 오른쪽 버튼을 클릭해 "Detach Process" 를 선택할 수 도 있다. 또한 Debug 메뉴의 "Detach All" 메뉴를 선택할 수도 있다.
연결을 끊는다고 해서 실행중인 프로세스가 종료되는 것은 아니다.

*) 원격 디버깅할 때 참고하면 되겠다.

@
Posted by six605
,