다음을 통해 공유


Visual C++로 작성된 구성 요소 디버깅

Microsoft Visual C++ 구성 요소에서 COM+ 기능을 디버그할 준비가 되면 Visual C++ 프로젝트 또는 구성 요소 서비스 관리 도구를 구성하여 디버거를 시작할 수 있습니다. Visual C++를 사용하는 경우 OLE RPC 및 JIT(Just-In-Time) 디버깅을 사용하여 원격 클라이언트로 디버그할 수 있습니다. 디버거에서 클라이언트를 실행할 수 없거나 클라이언트가 다른 컴퓨터에서 실행 중인 경우 디버거 설정에서 COM+ Launch를 사용할 수 있습니다. COM+ 애플리케이션 속성 대화 상자의 고급 탭에 있는 구성 요소 서비스 관리 도구에서 확인란으로 찾을 수 있습니다.

디버깅을 마치면 디버깅 중인 COM+ 애플리케이션을 종료해야 합니다. 서버 프로세스가 실행 중이면 기존 DLL이 여전히 메모리에 로드될 때 다음에 DLL을 빌드하려고 할 때 오류 메시지가 표시될 수 있습니다. COM+ 애플리케이션을 종료하려면 콘솔 트리에서 애플리케이션을 마우스 오른쪽 단추로 클릭한 다음 종료를 클릭합니다.

메모

트랜잭션을 사용하는 경우 기본적으로 60초로 설정되는 트랜잭션 제한 시간을 늘릴 수도 있습니다. 값 0을 지정하여 무한 트랜잭션 제한 시간을 효과적으로 지정할 수도 있습니다. 구성 요소 서비스 관리 도구를 사용하여 내 컴퓨터 속성 창의 옵션 탭에서 트랜잭션 제한 시간 설정을 변경합니다.

 

Visual C++를 사용하여 서버 애플리케이션 구성 요소 디버깅

COM+ 서버 애플리케이션을 디버깅할 때 클라이언트와 서버 애플리케이션을 모두 디버거에 로드하여 원격 호출을 디버그할 수 있습니다. Visual C++를 사용하면 JIT(Just-In-Time) 및 OLE RPC 설정을 통해 구성 요소에 대한 원격 호출을 디버그할 수 있습니다. JIT 설정으로 인해 컴파일된 구성 요소는 오류가 발생할 때 Visual C++ 디버거를 시작합니다. OLE RPC 설정을 사용하면 코드를 단계별로 실행할 때 디버거가 클라이언트에서 구성 요소로 단계별로 실행할 수 있습니다.

이러한 기능을 사용하도록 설정하면 디버거에서 클라이언트를 시작할 수 있습니다. 클라이언트가 구성 요소를 호출하면 서버가 네트워크의 다른 컴퓨터에 있더라도 디버거가 서버 프로세스에서 구성 요소의 코드로 한 단계씩 이동합니다. 필요한 경우 서버 컴퓨터에서 디버깅 세션이 자동으로 시작됩니다. 마찬가지로 구성 요소 코드에서 return 문을 한 단계씩 실행하면 클라이언트 코드의 다음 문으로 디버깅이 반환됩니다.

메모

디버거 설정에서 COM+ 시작을 사용하여 몇 가지 단계를 저장할 수 있습니다. 이렇게 하면 Visual C++ 환경에서 특별한 디버그 설정을 만들지 않고도 Visual C++ 또는 기타 디버거를 지정할 수 있습니다. COM+ 애플리케이션 속성 대화 상자의 고급 탭에 있는 구성 요소 서비스 관리 도구에서 확인란으로 찾을 수 있습니다. 자세한 내용은 이 항목의 "Visual C++없이 디버깅"을 참조하세요.

 

구성 요소가 포함된 COM+ 애플리케이션이 서버 애플리케이션인 경우 먼저 Component Services 관리 도구를 사용하여 애플리케이션을 종료해야 합니다. 이렇게 하려면 콘솔 트리에서 COM+ 애플리케이션을 마우스 오른쪽 단추로 클릭한 다음 종료를 클릭합니다.

Visual C++ RPC 디버깅을 사용하도록 설정하려면

  1. Visual C++의 도구 메뉴에서 옵션클릭합니다.

  2. 옵션 대화 상자의 디버그 탭에서 OLE RPC 디버깅즉시 디버깅 확인란을 선택하십시오.

  3. 확인을 클릭합니다.

디버깅을 시작하려면 디버거에서 클라이언트 프로젝트를 시작합니다.

디버거에서 클라이언트를 시작하지 않고도 구성 요소를 디버그할 수 있습니다. 이 경우 구성 요소는 자체적으로 디버거를 시작해야 합니다. 이렇게 하려면 구성 요소 프로젝트에서 COM+ 애플리케이션 ID와 함께 디버그 세션에 대한 실행 파일을 지정해야 합니다.

서버 애플리케이션 구성 요소가 Visual C++ 디버거 시작하도록 설정하려면

  1. 프로젝트 메뉴에서 설정클릭합니다.

  2. 프로젝트 설정 대화 상자에서, 설정 상자에서 Win32 디버그를 선택합니다.

  3. 디버그 탭에서, 범주 상자에 있는 일반을 선택합니다.

  4. 디버그 세션 실행 파일 상자에 Dllhost.exe의 정규화된 전체 경로를 입력하고, 구성 요소가 포함된 COM+ 애플리케이션의 애플리케이션 ID를 지정하는 인수를 입력합니다.

    메모

    구성 요소 서비스 관리 도구를 사용하면 COM+ 애플리케이션의 속성 대화 상자의 일반 탭에서 애플리케이션 ID를 찾을 수 있습니다. 다음은 예제입니다.

     

    메모

    C:\Winnt\System32\Dllhost.exe /ProcessID:{applicationID}

     

  5. 확인 클릭합니다.

이제 중단점을 설정하고, 디버거를 시작하고, 구성 요소에 대한 호출을 시작할 수 있습니다.

Visual C++를 사용하여 라이브러리 애플리케이션 구성 요소 디버깅

라이브러리 애플리케이션에서 구성 요소를 디버그하려면 클라이언트의 프로세스가 라이브러리 애플리케이션을 호스트하므로 클라이언트의 프로젝트를 구성해야 합니다.

Visual C++ 사용하여 라이브러리 애플리케이션 디버깅을 사용하도록 설정하려면

  1. Visual C++의 프로젝트 메뉴에서 설정클릭합니다.

  2. 프로젝트 설정 대화 상자에서, 설정 상자 안의 "Win32 디버그 "를클릭합니다.

  3. 디버그 탭의 범주 상자에서 추가 DLL클릭합니다.

  4. 모듈 목록에서 라이브러리 애플리케이션에 구성 요소 DLL을 추가합니다. 이렇게 하면 DLL이 실제로 로드되기 전에 중단점을 설정할 수 있습니다.

  5. 확인클릭합니다.

Visual C++ 없이 디버깅

디버깅에 Visual C++를 사용하든 그렇지 않든 디버거 설정에서 Launch를 사용하여 구성 요소를 실행할 디버거를 지정할 수 있습니다.

구성 요소 서비스 관리 도구에서 디버거를 지정하려면

  1. 콘솔 트리에서 디버그하려는 구성 요소가 포함된 COM+ 라이브러리 애플리케이션을 선택합니다.

  2. 애플리케이션을 마우스 오른쪽 단추로 클릭한 다음 속성클릭합니다.

  3. 애플리케이션의 속성 대화 상자에서 고급 탭을 클릭합니다.

  4. 디버깅아래에서 디버거 시작 확인란을 선택합니다.

  5. 디버거 경로 상자에 사용하려는 디버거의 경로를 입력합니다. 찾아보기 클릭하여 디버거를 찾을 수도 있습니다. C:\Winnt\System32\Ntsd.exe예는 다음과 같습니다.

  6. 확인클릭합니다.

Visual Basic로 작성된 구성 요소 디버깅