Partager via


Prise en charge du débogage COM+ Visual Basic contrastée avec MTS

COM+ supprime ou réduit plusieurs limitations du débogage avec Microsoft Visual Basic 6.0 et MTS. La liste suivante récapitule les modifications que vous pouvez attendre avec COM+:

  • Débogage de plusieurs composants : dans COM+, vous pouvez déboguer des scénarios dans lesquels un client s’exécutant dans un instance de l’IDE effectue des appels à n’importe quel nombre de DLL s’exécutant dans un autre groupe de projets. Les objets dans les projets DLL groupés peuvent s’appeler arbitrairement, en flux de contexte selon les besoins. Bien sûr, cela fonctionne également lorsque les DLL et le client se trouvent dans le même groupe de projets dans le même instance de l’IDE.

  • Limitations du débogage sur les événements Class_Initialize et Class_Terminate : avec COM+, vous pouvez placer du code dans les événements Class_Initialize et Class_Terminate d’un composant d’application COM+, même si ce code tente d’accéder à l’objet ou à l’objet de contexte correspondant. Vous pouvez y définir des points d’arrêt et utiliser des montres. Vous pouvez également définir des points d’arrêt dans l’événement Class_Terminate.

    Bien qu’elle ne soit plus nécessaire comme solution de contournement, vous pouvez toujours implémenter l’interface IObjectControl et utiliser ses méthodes Activate et Deactivate si vous devez exécuter du code pendant le démarrage et l’arrêt de votre composant. Vous pouvez également maintenant placer des points d’arrêt dans le code des méthodes Deactivate ou CanBePooled .

  • Surveillance des objets MTS : avec COM+, vous pouvez ajouter des montres pour les variables d’objet retournées par COM+, y compris les valeurs de retour des méthodes SafeRef, GetObjectContext et IObjectContext::CreateInstance .

  • Stabilité accrue en cas d’échec des composants : dans COM+, une défaillance de composant n’arrête plus toujours Visual Basic (qui s’exécute dans le même processus que le composant débogué). Par exemple, la prise en charge des échecs de réactivation juste-à-temps (JIT) vous permet désormais d’examiner le contexte de l’objet lors du débogage.

  • Le débogueur peut réactiver des objets libérés par COM+. Comme avec MTS, Visual Basic 6.0 peut réactiver des objets COM+ pendant que vous déboguez une étape unique via un client. Étant donné la façon dont Visual Basic 6.0 découvre des informations sur les objets, il s’agit d’un comportement attendu. Considérons par exemple le code suivant :

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

    Si l’obj. La méthode de test appelle IObjectContext::SetComplete, COM+ libère immédiatement obj de la mémoire, mais obj n’a pas encore été défini sur Nothing. Quand obj. Le test retourne, le débogueur Visual Basic appelle QueryInterface sur obj pour l’interface IProvideClassInfo . Le wrapper de contexte associé à obj crée une instance de MyApp.MyClass pour traiter l’appel QueryInterface. Par conséquent, vous verrez cet objet non initialisé dans le débogueur après obj. Le test est retourné. Cet objet apparaît uniquement dans le débogueur et est supprimé par l’instruction suivante pour définir obj sur Nothing.

Débogage des composants Visual Basic compilés

Débogage dans l’IDE Visual Basic