Compartir a través de


Compatibilidad con la depuración de Visual Basic com+ contrastada con MTS

COM+ quita o reduce varias limitaciones de depuración con Microsoft Visual Basic 6.0 y MTS. En la lista siguiente se resumen los cambios que puede esperar con COM+:

  • Depuración de varios componentes: en COM+, puede depurar escenarios en los que un cliente que se ejecuta en una instancia del IDE realiza llamadas a cualquier número de archivos DLL que se ejecutan en otro como un grupo de proyectos. Los objetos de los proyectos DLL agrupados pueden llamarse entre sí de forma arbitraria y fluir el contexto según sea necesario. Por supuesto, esto también funciona cuando los archivos DLL y el cliente están en el mismo grupo de proyectos en la misma instancia del IDE.

  • Limitaciones de depuración en eventos de Class_Initialize y Class_Terminate: con COM+, puede colocar código en el Class_Initialize y Class_Terminate eventos de un componente de aplicación COM+, incluso si ese código intenta acceder al objeto o a su objeto de contexto correspondiente. Puede establecer puntos de interrupción allí y usar relojes. También puede establecer puntos de interrupción en el evento Class_Terminate.

    Aunque ya no es necesario como solución alternativa, todavía puede implementar la interfaz IObjectControl y usar sus métodos Activate y Deactivate si necesita ejecutar código durante el inicio y el apagado del componente. Ahora también puede colocar puntos de interrupción en el código para los métodos Deactivate o CanBePooled .

  • Inspección de objetos MTS: con COM+, puede agregar relojes para variables de objeto devueltas por COM+, incluidos los valores devueltos por los métodos SafeRef, GetObjectContext e IObjectContext::CreateInstance .

  • Mayor estabilidad cuando se producen errores en los componentes: en COM+, un error de componente ya no siempre detendrá Visual Basic (que se ejecuta en el mismo proceso que el componente depurado). Por ejemplo, la compatibilidad con errores de reactivación Just-In-Time (JIT) ahora le permite examinar el contexto del objeto durante la depuración.

  • El depurador puede reactivar objetos liberados por COM+: al igual que con MTS, Visual Basic 6.0 puede reactivar objetos COM+ mientras depura un solo paso a través de un cliente. Debido a la forma en que Visual Basic 6.0 detecta información sobre los objetos, se espera este comportamiento. Por ejemplo, considere el siguiente código:

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

    Si el obj. El método de prueba llama a IObjectContext::SetComplete, COM+ libera inmediatamente obj de la memoria, pero obj aún no se ha establecido en Nothing. Cuando obj. La prueba devuelve, el depurador de Visual Basic llama a QueryInterface en obj para la interfaz IProvideClassInfo . El contenedor de contexto asociado a obj crea una nueva instancia de MyApp.MyClass para atender la llamada a QueryInterface . Como resultado, verá este objeto sin inicializar en el depurador después de obj. Se ha devuelto la prueba. Este objeto solo aparece en el depurador y se quita mediante la instrucción posterior para establecer obj en Nothing.

Depuración de componentes de Visual Basic compilados

Depuración en el IDE de Visual Basic