Condividi tramite


Supporto del debug COM+ Visual Basic in contrasto con MTS

COM+ rimuove o riduce diverse limitazioni del debug con Microsoft Visual Basic 6.0 e MTS. L'elenco seguente riepiloga le modifiche che è possibile prevedere con COM+:

  • Debug di più componenti: in COM+, è possibile eseguire il debug di scenari in cui un client in esecuzione in un'istanza dell'IDE effettua chiamate a un numero qualsiasi di DLL in esecuzione in un altro come gruppo di progetti. Gli oggetti nei progetti DLL raggruppati possono chiamare l'uno dall'altro in modo arbitrario, flusso del contesto in base alle esigenze. Naturalmente, questo funziona anche quando le DLL e il client si trovano nello stesso gruppo di progetti nella stessa istanza dell'IDE.

  • Limitazioni di debug su eventi Class_Initialize e Class_Terminate: con COM+, è possibile inserire il codice negli eventi Class_Initialize e Class_Terminate di un componente dell'applicazione COM+ anche se tale codice tenta di accedere all'oggetto o all'oggetto contesto corrispondente. È possibile impostare punti di interruzione in questa posizione e usare espressioni di controllo. È anche possibile impostare punti di interruzione nell'evento Class_Terminate.

    Anche se non è più necessaria come soluzione alternativa, è comunque possibile implementare l'interfaccia IObjectControl e usare i relativi metodi Activate e Deactivate se è necessario eseguire il codice durante l'avvio e l'arresto del componente. È anche possibile inserire punti di interruzione nel codice per i metodi Deactivate o CanBePooled .

  • Controllo degli oggetti MTS: con COM+, è possibile aggiungere espressioni di controllo per le variabili oggetto restituite da COM+, inclusi i valori restituiti dai metodi Cassaforte Ref, GetObjectContext e IObjectContext::CreateInstance.

  • Maggiore stabilità quando i componenti hanno esito negativo: in COM+, un errore del componente non arresterà più Visual Basic (che viene eseguito nello stesso processo del componente sottoposto a debug). Ad esempio, il supporto per gli errori di riattivazione JIT consente ora di esaminare il contesto dell'oggetto durante il debug.

  • Il debugger può riattivare gli oggetti rilasciati da COM+: come per MTS, Visual Basic 6.0 può riattivare gli oggetti COM+ durante il debug in un unico passaggio tramite un client. A causa del modo in cui Visual Basic 6.0 individua informazioni sugli oggetti, si tratta di un comportamento previsto. Si consideri il codice di esempio seguente:

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

    Se l'obj. Il metodo test chiama IObjectContext::SetComplete, COM+ libera immediatamente obj dalla memoria, ma obj non è ancora stato impostato su Nothing. Quando obj. Il debugger di Visual Basic chiama QueryInterface su obj per l'interfaccia IProvideClassInfo. Il wrapper di contesto associato a obj crea una nuova istanza di MyApp.MyClass per gestire la chiamata QueryInterface . Di conseguenza, questo oggetto non inizializzato verrà visualizzato nel debugger dopo obj. Il test è stato restituito. Questo oggetto viene visualizzato solo nel debugger e viene rimosso dall'istruzione successiva per impostare obj su Nothing.

Debug di componenti di Visual Basic compilati

Debug nell'IDE di Visual Basic