다음을 통해 공유


COM+ Visual Basic 디버깅 지원 MTS와 대조

COM+는 Microsoft Visual Basic 6.0 및 MTS를 사용하여 디버깅의 몇 가지 제한 사항을 제거하거나 줄입니다. 다음 목록에는 COM+로 예상할 수 있는 변경 내용이 요약되어 있습니다.

  • 여러 구성 요소 디버깅 - COM+에서 IDE의 한 instance 실행되는 클라이언트가 다른 에서 실행되는 DLL을 프로젝트 그룹으로 호출하는 시나리오를 디버그할 수 있습니다. 그룹화된 DLL 프로젝트의 개체는 필요에 따라 임의로 흐름 컨텍스트를 호출할 수 있습니다. 물론 이는 DLL과 클라이언트가 IDE의 동일한 instance 동일한 프로젝트 그룹에 있는 경우에도 작동합니다.

  • Class_Initialize 및 Class_Terminate 이벤트에 대한 디버깅 제한 사항 - COM+를 사용하면 코드가 개체 또는 해당 컨텍스트 개체에 액세스하려고 하더라도 COM+ 애플리케이션 구성 요소의 Class_Initialize 및 Class_Terminate 이벤트에 코드를 넣을 수 있습니다. 중단점을 설정하고 시계를 사용할 수 있습니다. Class_Terminate 이벤트에서 중단점을 설정할 수도 있습니다.

    더 이상 해결 방법으로 필요하지는 않지만 IObjectControl 인터페이스를 구현하고 구성 요소를 시작 및 종료하는 동안 코드를 실행해야 하는 경우 활성화비활성화 메서드를 사용할 수 있습니다. 이제 Deactivate 또는 CanBePooled 메서드에 대한 코드에 중단점을 배치할 수도 있습니다.

  • MTS 개체 보기 - COM+를 사용하면 SafeRef, GetObjectContextIObjectContext::CreateInstance 메서드의 반환 값을 포함하여 COM+에서 반환된 개체 변수에 대한 감시를 추가할 수 있습니다.

  • 구성 요소가 실패할 때 안정성 향상 - COM+에서 구성 요소 오류는 더 이상 Visual Basic(디버그된 구성 요소와 동일한 프로세스에서 실행됨)을 중지하지 않습니다. 예를 들어 JIT(Just-In-Time) 다시 활성화 실패를 지원하면 이제 디버깅하는 동안 개체 컨텍스트를 볼 수 있습니다.

  • 디버거는 COM+에서 해제된 개체를 다시 활성화할 수 있습니다. MTS와 마찬가지로 Visual Basic 6.0은 클라이언트를 통해 단일 단계를 디버깅하는 동안 COM+ 개체를 다시 활성화할 수 있습니다. Visual Basic 6.0에서 개체에 대한 정보를 검색하는 방식 때문에 예상되는 동작입니다. 예를 들어, 다음 코드를 고려하세요.

    Dim obj As Object
    Set obj = CreateObject("MyApp.MyClass")
    obj.Test  'Call the user-defined subroutine named Test.
    Set obj = Nothing
    

    obj인 경우 테스트 메서드는 IObjectContext::SetComplete를 호출하고 COM+는 obj를 메모리에서 즉시 해제하지만 obj는 아직 Nothing으로 설정되지 않았습니다. 때 obj. 테스트가 반환되면 Visual Basic 디버거는 IProvideClassInfo 인터페이스에 대해 obj에서 QueryInterface를 호출합니다. obj와 연결된 컨텍스트 래퍼는 QueryInterface 호출을 처리하는 MyApp.MyClass의 새 instance 만듭니다. 결과적으로 obj 다음에 디버거에 초기화되지 않은 이 개체가 표시됩니다. 테스트가 반환되었습니다. 이 개체는 디버거에만 표시되며 obj를 Nothing으로 설정하기 위한 후속 명령에 의해 제거됩니다.

컴파일된 Visual Basic 구성 요소 디버깅

Visual Basic IDE에서 디버깅