Snapshot debugging
Salve lettore, in questo articolo ti voglio spiegare come utilizzare lo snapshot debugging in un ambiente onPrem di Microsoft Business Central. Con l’avvento di Business Central, la struttura è molto cambiata, se prima eri abituato a debuggare direttamente in produzione, quando il cliente ti segnala un problema; ora con le app e ancora di più in un ambiente cloud questa procedura non può essere così agile.
Dalla versione 17.2 Microsoft ha introdotto lo snapshot debugging. Tale procedura permette di debuggare un ambiente cloud o più in generale un ambiente di produzione solamente avendo i simboli dell’ambiente preso in analisi; vediamo come fare.
Nel file launch.json dobbiamo aggiungere una configurazione per poter istanziare il nostro snapshot. La configurazione sicuramente cambia a seconda dell’installazione che abbiamo davanti, qui di seguito ti mostro una configurazione di un ambiente onPrem cambiando un po’ di parametri di default rispetto all’installazione standard.
In questo file ho impostato dei parametri, i più interessanti da tener conto sono:
- request: da inserire col valore snapshotInitialize, indica al debugger che deve attivarsi in modalità snapshot.
- environmentType: inserire quale tipologia di ambiente si desidera debuggare. Nel mio caso onPrem, ma potrebbe essere anche Production o Sandbox.
- breakOnNext: inserire il valore WebClient per indicare al sistema che si vuole debuggare una procedura eseguita dal client.
- executionContext: inserire qui un valore tra Debug, Profile e DebugAndProfile. Profile significa che vogliamo generare un profilo per le prestazioni, cioè quello che una volta era il code coverage (per dirla in maniera sintetica).
- sessionId: in questa proprietà va inserito l’id sessione che si vuole debuggare. L’id sessione può essere identificato tramite le informazioni sulla pagina dal client di Business Central o tramite il comando PowerShell Get-NavServerSession
- snapshotVerbosity: inserire qui i valori Full o SnapPoint a seconda se si voglia eseguire un’istantanea globale o solo nei punti di interruzione inseriti (appunto snapPoint).
Ti consiglio di inserire gli snap point nello stesso progetto in cui hai sviluppato le app, questo per evitare problemi se hai impostato nella tua app ShowMyCode = false.
Ora siamo pronti per inserire gli snap point (punti di interruzione) all’interno della nostra soluzione tramite F9. Fatto questo inizializziamo lo snapshot tramite il comando “Initialize snapshot debugging“
Una volta inizializzato lo snapshot, apriamo il client e un messaggio ci informa che quella sessione è sotto snapshot debugging.
Eseguiamo il processo del quale abbiamo messo gli snapoint, dopodiché torniamo su Visual Studio Code e terminiamo lo snapshot tramite il comando “Finish snapshot debugging on the server“. Sempre VS Code ci informa quale sarà la sessione che sta salvando, clicchiamo sulla voce creata. Viene salvata una cartella .snapshots con all’interno un file snapshots.json e un file .zip con il nome della sessione snapshot appena creata.
Da notare come l’icona del debugger sia ora di colore arancio. Questo indica che abbiamo sessioni snapshot pronte per il debug.
Ora, con il file .zip creato possiamo debuggare tutte le volte che vogliamo il processo monitorato, basta semplicemente cliccare sull’icona color arancio o col comando “Show all snapshots“. Verranno visualizzate tutti gli snapshot creati, selezioniamo quello appena creato.
Selezionata la sessione di snapshot, possiamo ispezionare il codice verificando le variabili come mostrato nell’immagine sotto.
Stupendo! Vero? Ricorda però, che ci sono alcune accortezze da tener presente:
- I simboli del server e quelli su cui si mettono gli snap point devono essere uguali. Il rischio è di avere una versione diversa di software e il debugger non si fermerà.
- Una sessione di snapshot, viene disconnessa dal server dopo 30 minuti se non si sono superati i punti dove sono stati inseriti gli snap.
- Se si è attraversato un punto di snap, si hanno 10 minuti di tempo per poter scaricare il file .zip. Passato questo tempo occorre rifare la sessione di snapshot debugging.
- L’utente che avvia la sessione di snapshot debugging deve avere il set di autorizzazione D365 Snapshot Debug (sempre che l’utente non abbia il set di autorizzazione SUPER).
- Il servizio deve essere con il segno di spunta “Enable Snapshot Debbugger Services EndPoint“
Lo snapshot debugger è, dunque, lo strumento principale per poter debuggare una soluzione cloud o più in generale in ambiente di produzione. E tu l’hai già utilizzato questo strumento? Se vuoi approfondire l’argomento qui la documentazione standard Microsoft.