Debug dell'applicazione di Service Fabric mediante Visual Studio

Eseguire il debug di un'applicazione di Service Fabric

Importante

Il debug remoto non è supportato in VS 2022

Per risparmiare tempo e denaro, è possibile distribuire l'applicazione di Service Fabric ed eseguirne il debug in un cluster di sviluppo locale. Visual Studio 2019 o 2015 può distribuire l'applicazione nel cluster locale e connettere automaticamente il debugger a tutte le istanze dell'applicazione. Visual Studio deve essere eseguito come amministratore per connettere il debugger.

  1. Avviare un cluster di sviluppo locale seguendo la procedura descritta nell'articolo Configurazione dell'ambiente di sviluppo di Service Fabric.

  2. Premere F5 oppure fare clic su Debug>Avvia debug.

    Screenshot che mostra il menu Debug.

  3. Impostare i punti di interruzione nel codice ed eseguire l'applicazione un'istruzione alla volta scegliendo i comandi dal menu Debug .

    Nota

    Visual Studio si connette a tutte le istanze dell'applicazione. Mentre il codice viene eseguito un'istruzione alla volta, i punti di interruzione possono essere raggiunti da più processi, dando luogo a sessioni simultanee. Provare a disabilitare i punti di interruzione dopo che sono stati raggiunti rendendoli condizionali in base all'ID del thread, oppure usando gli eventi di diagnostica.

  4. La finestra degli eventi di diagnostica si aprirà automaticamente per visualizzare gli eventi diagnostici in tempo reale.

    Visualizzare gli eventi diagnostici in tempo reale

  5. È possibile aprire la finestra degli eventi di diagnostica anche in Cloud Explorer. In Service Fabric fare clic con il pulsante destro del mouse e scegliere Visualizza tracce streaming.

    Aprire la finestra degli eventi di diagnostica

    Se si desidera filtrare le tracce in un servizio o un'applicazione specifici, abilitare le tracce di streaming su tale servizio o applicazione specifica.

  6. Gli eventi diagnostici possono essere visualizzati nel file ServiceEventSource.cs generato automaticamente e vengono chiamati dal codice dell'applicazione.

    ServiceEventSource.Current.ServiceMessage(this, "My ServiceMessage with a parameter {0}", result.Value.ToString());
    
  7. Nella finestra deglieventi di diagnostica è possibile filtrare, sospendere ed esaminare eventi in tempo reale. Il filtro è una semplice ricerca di stringhe del messaggio dell'evento, incluso il relativo contenuto.

    Filtrare, sospendere e riprendere o esaminare eventi in tempo reale

  8. Il debug dei servizi è come il debug di qualsiasi altra applicazione. In genere verranno impostati punti di interruzione tramite Visual Studio per semplificare il debug. Anche se le raccolte Reliable Collections vengono replicate in più nodi, implementano comunque IEnumerable. Questa implementazione significa che è possibile usare la visualizzazione risultati in Visual Studio durante il debug per visualizzare gli elementi archiviati all'interno. A tale scopo, impostare un punto di interruzione ovunque nel codice.

    Avviare il debug di un'applicazione

Esecuzione di uno script come parte del debug

In alcuni scenari potrebbe essere necessario eseguire uno script come parte dell'avvio di una sessione di debug, ad esempio quando non si usano Servizi predefiniti.

In Visual Studio è possibile aggiungere un file denominato Start-Service.ps1 nella cartella Script del progetto applicazione di Service Fabric (.sfproj). Questo script verrà richiamato dopo la creazione dell'applicazione nel cluster locale.

Eseguire il debug di un'applicazione remota di Service Fabric

Se le applicazioni di Service Fabric sono in esecuzione in un cluster di Service Fabric in Azure, è possibile eseguire il debug remoto di queste applicazioni direttamente da Visual Studio.

Nota

La funzionalità richiede Service Fabric SDK 2.0 e Azure SDK per .NET 2.9.

Avviso

Il debug remoto è progettato per scenari di sviluppo e test e non deve essere usato in ambienti di produzione a causa dell'impatto sulle applicazioni in esecuzione.

  1. Passare al cluster in Cloud Explorer. Fare clic con il pulsante destro del mouse e scegliere Abilita debug

    Abilitare il debug remoto

    Questa azione inizierà il processo di abilitazione dell'estensione di debug remoto nei nodi del cluster e delle configurazioni di rete necessarie.

  2. Fare clic con il pulsante destro del mouse sul nodo del cluster in Cloud Explorer e scegliere Associa debugger

    Collega debugger

  3. Nella finestra di dialogo Associa a processo scegliere il processo di cui si vuole eseguire il debug e fare clic su Collega

    Scegliere il processo

    Il nome del processo a cui connettersi corrisponde al nome dell'assembly del progetto del servizio.

    Il debugger si connetterà a tutti i nodi che eseguono il processo.

    • Nel caso in cui si esegue il debug di un servizio senza stato, tutte le istanze del servizio in tutti i nodi fanno parte della sessione di debug.

    • Se si esegue il debug di un servizio con stato, solo la replica primaria di qualsiasi partizione sarà attiva e quindi rilevata dal debugger. Se la replica primaria viene spostata durante la sessione di debug, l'elaborazione di quella replica farà ancora parte della sessione di debug.

    • Per rilevare solo partizioni o istanze rilevanti di un determinato servizio, è possibile usare punti di interruzione condizionali solo per interrompere una partizione o un'istanza specifica.

      Punto di interruzione condizionale

      Nota

      Attualmente non è supportato il debug di un cluster di Service Fabric con più istanze dello stesso nome di eseguibile del servizio.

  4. Al termine del debug dell'applicazione è possibile disabilitare l'estensione di debug remoto facendo clic con il pulsante destro del mouse sul cluster in Cloud Explorer e scegliendo Disabilita debug

    Disabilitare il debug remoto

Streaming delle tracce da un nodo del cluster remoto

È anche possibile trasmettere tracce direttamente da un nodo del cluster remoto a Visual Studio. Questa funzionalità consente di eseguire lo streaming degli eventi di traccia ETW, generati su un nodo del cluster di Service Fabric.

Nota

La funzionalità richiede Service Fabric SDK 2.0 e Azure SDK per .NET 2.9. Questa funzionalità supporta solo i cluster in esecuzione in Azure.

Avviso

Lo streaming delle tracce è progettato per scenari di sviluppo e test e non deve essere usato in ambienti di produzione a causa dell'impatto sulle applicazioni in esecuzione. In uno scenario di produzione è consigliabile basarsi sugli eventi di inoltro usando Diagnostica di Azure.

  1. Passare al cluster in Cloud Explorer. Fare clic con il pulsante destro del mouse e scegliere Abilita tracce di streaming

    Abilitare le tracce di streaming remote

    Questa azione inizierà il processo di abilitazione dell'estensione delle tracce di streaming nei nodi del cluster, oltre alle configurazioni di rete necessarie.

  2. Espandere l'elemento Nodi in Cloud Explorer, fare clic con il pulsante destro del mouse sul nodo da cui trasmettere le tracce e scegliere Visualizza tracce streaming

    Visualizzare le tracce di streaming remote

    Ripetere il passaggio 2 per tutti i nodi da cui visualizzare le tracce. Il flusso di ogni nodo verrà visualizzato in una finestra dedicata.

    A questo punto è possibile vedere le tracce emesse da Service Fabrice e dai propri servizi. Per filtrare gli eventi in modo da visualizzare solo una specifica applicazione, è sufficiente immettere il nome dell'applicazione nel filtro.

    Visualizzazione delle tracce di streaming

  3. Al termine dello streaming delle tracce dal cluster, è possibile disabilitare le tracce di streaming remote facendo clic con il pulsante destro del mouse sul cluster in Cloud Explorer e scegliere Disabilita tracce streaming

    Disabilitare le tracce di streaming remote

Passaggi successivi