Udostępnij przez


Obsługa debugowania COM+ Visual Basic kontrastowana z usługą MTS

Com+ usuwa lub zmniejsza kilka ograniczeń debugowania w programach Microsoft Visual Basic 6.0 i MTS. Poniższa lista zawiera podsumowanie zmian, których można oczekiwać za pomocą modelu COM+:

  • Debugowanie wielu składników — w modelu COM+można debugować scenariusze, w których klient uruchomiony w jednym wystąpieniu środowiska IDE wykonuje wywołania dowolnej liczby bibliotek DLL uruchomionych w innej grupie projektów. Obiekty w zgrupowanych projektach DLL mogą wywoływać się dowolnie, przepływając kontekst zgodnie z potrzebami. Oczywiście działa to również wtedy, gdy biblioteki DLL i klient znajdują się w tej samej grupie projektów w tym samym wystąpieniu środowiska IDE.

  • Ograniczenia debugowania dotyczące zdarzeń Class_Initialize i Class_Terminate — za pomocą COM+ można umieścić kod w zdarzeniach Class_Initialize i Class_Terminate składnika aplikacji COM+ nawet jeśli ten kod próbuje uzyskać dostęp do obiektu lub odpowiadającego mu obiektu kontekstu. Możesz ustawić tam punkty przerwania i używać zegarków. Punkty przerwania można również ustawić w zdarzeniu Class_Terminate.

    Mimo że nie jest już potrzebne jako obejście, nadal można zaimplementować interfejs IObjectControl i użyć jego metod Aktywacja i Deaktywacja, jeśli musisz wykonać kod podczas uruchamiania i zamykania składnika. Teraz można również umieścić punkty przerwania w kodzie dla metod Dezaktywuj lub CanBePooled.

  • Oglądanie obiektów MTS — za pomocą modelu COM+ można dodawać obserwacje dla zmiennych obiektowych zwracanych przez COM+, w tym wartości zwracane z SafeRef, GetObjectContextoraz IObjectContext::CreateInstance metod.

  • Zwiększona stabilność w przypadku awarii składników — w modelu COM+awaria składnika nie będzie już zawsze zatrzymywać języka Visual Basic (który działa w tym samym procesie co debugowany składnik). Na przykład obsługa błędów ponownej aktywacji just in time (JIT) umożliwia teraz przyjrzenie się kontekstowi obiektu podczas debugowania.

  • Debugger może ponownie uaktywnić obiekty wydane przez COM+ — podobnie jak w przypadku usługi MTS, program Visual Basic 6.0 może ponownie uaktywnić obiekty COM+ podczas debugowania po kroku w aplikacji klienckiej. Ze względu na sposób, w jaki program Visual Basic 6.0 odnajduje informacje o obiektach, jest to oczekiwane zachowanie. Rozważmy na przykład następujący kod:

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

    Jeśli metoda obj.Test wywołuje IObjectContext::SetComplete, COM+ natychmiast zwalnia obj z pamięci, ale obj nie zostało jeszcze ustawione na Nothing. Kiedy metoda Test w obj zwraca wynik, debuger języka Visual Basic wywołuje QueryInterface na obj dla interfejsu IProvideClassInfo. Opakowanie kontekstu związane z obj tworzy nowe wystąpienie klasy MyApp.MyClass, aby obsłużyć wywołanie QueryInterface. W rezultacie w debugerze będzie można zobaczyć ten niezainicjowany obiekt po zakończeniu działania obj.Test. Ten obiekt jest wyświetlany tylko w debugerze i jest usuwany przez kolejną instrukcję, aby ustawić obj na Wartość Nic.

Debugowanie skompilowanych komponentów Visual Basic

Debugowanie w środowisku IDE języka Visual Basic