COM 서버 및 컨테이너 디버깅

COM 애플리케이션은 프로그래머가 직접 제어할 수 없는 여러 작업을 수행합니다. DLL 간 통신, 개체의 사용 횟수 및 클립보드 작업은 예기치 않은 동작이 발생할 수 있는 몇 가지 영역에 불과합니다. 이 경우 첫 번째 단계는 문제의 원인을 추적하는 것입니다.

Visual Studio 디버거는 컨테이너 및 서버 간 단계별 실행이 지원됩니다. 여기에는 RPC(원격 프로시저 호출)를 단계별로 실행하는 기능이 포함됩니다.

동일한 솔루션에서 COM 서버 및 컨테이너 디버깅

동일한 솔루션 내의 두 프로젝트를 사용하여 COM 서버와 컨테이너를 디버그할 수 있습니다. 각 프로젝트에 적절한 중단점을 설정하고 디버그합니다. 컨테이너가 중단점에 도달한 서버를 호출하면 컨테이너는 서버 코드가 반환될 때까지 대기합니다(즉, 디버깅을 완료할 때까지).

COM 컨테이너 디버깅은 표준 프로그램을 디버깅하는 것과 비슷합니다. 한 가지 차이점은 콜백을 생성하는 이벤트(예: 컨테이너 애플리케이션을 통해 데이터 끌기)를 디버그하는 경우입니다. 이 경우 콜백 함수에서 중단점을 설정해야 합니다.

컨테이너 정보 없이 서버 애플리케이션 디버깅

컨테이너 애플리케이션에 대한 디버깅 정보가 없거나 사용하지 않으려는 경우 서버 애플리케이션 디버그를 시작하는 것은 3단계 프로세스입니다.

  1. 일반 애플리케이션으로 서버 디버깅을 시작합니다.

  2. 중단점을 원하는 대로 설정합니다.

  3. 컨테이너 애플리케이션을 시작합니다.

서버 및 SDI(도메인 격리) 애플리케이션 디버깅

서버 및 SDI(도메인 격리) 서버 애플리케이션을 디버깅하는 경우 C/C++, C#또는 Visual Basic 프로젝트의 /Embedding 속성 페이지 대화 상자에서 /Automation 속성을 지정하거나 명령줄 인수 속성에 지정 해야 합니다.

이러한 명령줄 인수를 사용하면 디버거가 컨테이너에서 시작된 것처럼 서버 애플리케이션을 시작할 수 있습니다. 그런 다음, Program Manager 또는 파일 관리자에서 컨테이너를 시작하면 컨테이너가 디버거에서 시작된 서버의 인스턴스를 사용합니다.

프로젝트 속성 페이지 대화 상자에 액세스하려면 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에서 속성을 선택합니다. 명령줄 인수 속성을 찾으려면 구성 속성 범주를 확장하고 디버깅 페이지를 클릭합니다.