Come eseguire il debug di uno script PowerShell

0
178

Qualsiasi sviluppo di script di solito richiede la risoluzione dei problemi che di solito si traduce in uno dei due approcci. L'impostazione manuale delle variabili sui valori e l'emissione di tali dati durante l'esecuzione dello script oppure l'utilizzo del debug per impostare i punti di interruzione per l'ispezione dei dati prima di continuare o interrompere. Integrato in PowerShell ISE e in Visual Studio Code è la capacità di eseguire il debug.

Come funziona il debug di PowerShell?

Incluso con Windows PowerShell, PowerShell ISE è stato l'ambiente tradizionale di riferimento per il debug degli script PowerShell. Con un menu integrato per il debug e una rappresentazione grafica dei punti di interruzione, è facile iniziare. Innanzitutto, è necessario salvare qualsiasi script di cui si sta eseguendo il debug. Successivamente, dovrai impostare i punti di interruzione utilizzando uno dei tre modi seguenti.

  • Sulla linea focalizzata usa il tasto F9 per impostare un punto di interruzione.
  • Fai clic con il pulsante destro del mouse accanto a un riga e scegli Attiva/disattiva punto di interruzione per impostare un punto di interruzione.
  • Utilizzare Set-PSBreakPoint specificando una riga, una variabile, una funzione o un testo corrispondente.

Una volta impostato un punto di interruzione, puoi semplicemente avviare il debug eseguendo lo script con F5 o Debug → Esegui/Continua. Una volta che lo script raggiunge il punto di interruzione specificato, l'esecuzione verrà sospesa e sarà necessario eseguire una delle seguenti azioni.

  • Passa oltre – Esegue solo l'istruzione corrente, fermandosi prima dell'istruzione successiva. Se l'istruzione corrente è una funzione o uno script, esegui l'intera chiamata prima di interromperla.
  • Entra in – Simile a Step Over, esegue solo l'istruzione corrente, fermandosi prima dell'istruzione successiva. Invece di eseguire l'intera funzione o script, se chiamato, entra nella chiamata.
  • Esci– Se all'interno di una funzione, esce e sale di un livello se la funzione è nidificata. Se nello script principale viene eseguito fino alla fine dello script o al successivo punto di interruzione, a seconda di quale sia il primo. Le istruzioni ignorate vengono eseguite ma non eseguite.

Quando lo script viene interrotto in corrispondenza di un punto di interruzione, puoi passare il mouse su una variabile con il cursore del mouse e vedere quali sono i valori di una determinata variabile. Inoltre, è possibile utilizzare la riga di comando anche per l'output delle variabili per visualizzare lo stato corrente. Ci sono alcuni avvertimenti a questo proposito. $_, $Input, $MyInvocation, $PSBoundParameters e $Args non funzioneranno in quanto sono variabili automatiche e non soggette a debug. Un modo per recuperare quei valori è assegnarli a una variabile intermedia che può quindi essere impostata per un punto di interruzione.

Debug di PowerShell nel codice di Visual Studio

Molto simile a come funziona PowerShell ISE, Visual Studio Code aggiunge diverse opzioni di debug molto utili. Inoltre, VS Code consente di eseguire facilmente il debug con PowerShell 7.x mentre ISE è tradizionalmente limitato a Windows PowerShell. Utilizzando gli stessi comandi chiave di PowerShell ISE, puoi iniziare rapidamente con il debug. Ancora meglio è che ora hai il riquadro di debug all'interno di VS Code che consolida gran parte dell'output delle variabili e rende più facile la visualizzazione di un'istantanea di tutti i valori delle variabili nel codice.

Utilizzo del debug di VS Code

Proprio come PowerShell ISE, puoi usare F5 per avviare una sessione di debug interattiva. A differenza di ISE, VS Code offre un'esperienza di debug molto migliore e più utile. Non solo ottieni la tradizionale console di debug, indicata dal prompt [DBG], ma hai tutte le variabili conosciute e il loro output nel riquadro di debug a sinistra. Per migliorare la navigazione nelle opzioni di debug, la barra di debug in alto rende molto facile entrare, uscire e superare i punti di interruzione. Inoltre, non è necessario salvare prima dell'esecuzione!

L'estensione PowerShell di VS Code è necessaria affinché funzioni facilmente.

Utilizzo dei comandi di debug dei comandi

< p>Anche se il debug rigorosamente dalla riga di comando non è l'operazione più facile da fare a volte, puoi farlo usando i comandi di debug incorporati. Ci sono alcuni comandi integrati per semplificare la cosa.

  • Set-PSBreakPoint – Imposta un punto di interruzione che si attiva su una riga, un comando o una variabile specifici.
  • Get-PSBreakPoint – Recupera un punto di interruzione specifico per ID o elenca tutti i punti di interruzione.
  • Remove-PSBreakPoint – Rimuove un punto di interruzione specifico.
  • Disable-PSBreakPoint – Disabilita temporaneamente un punto di interruzione, ma non rimuoverlo.
  • Enable-PSBreakPoint – Abilita un punto di interruzione precedentemente disabilitato.

Utilizzando il versatile Set-PSBreakPoint, puoi impostare rapidamente un punto di interruzione che una volta raggiunto ti lascerà nel prompt dei comandi di debug. A quel punto, usando le combinazioni di tasti standard puoi ispezionare rapidamente le variabili e continuare o interrompere l'esecuzione a quel punto.

Conclusione

Il debug non deve essere difficile e una volta iniziato con uno dei metodi di cui sopra, lo troverai parte integrante delle tue esigenze di sviluppo dello script. Scopri come iniziare subito con il debug di PowerShell!