Sono abbastanza nuovo in Powershell e ho scritto degli script piuttosto grandi, vale a dire uno script che chiama altri script che hanno funzioni annidate in altre funzioni. Quando lancio questo script, a volte ho degli errori che non so da dove provengano. C'è un modo semplice per vedere dove termina questo script in modo che io possa risolvere l'errore?Come tracciare il flusso di script
risposta
È possibile utilizzare Set-PsDebug
per arrivare PowerShell per l'uscita quasi ogni linea corre:
Set-PSDebug -Trace 1;
L'unico inconveniente è probabilmente vi ritroverete con un sacco di uscita guadare attraverso ...
Normalmente l'errore include lo script chiamante.
In caso contrario, è possibile provare a eseguire lo script di Window PowerShell ISE in modalità di debug. Questo ti consente di utilizzare punti di interruzione e passaggio del codice.
Artile sull'utilizzo della ISE per il debug:
riguarda Arcass
Per il debug per vedere dove il vostro errore di sono provenienti da suggerisco di debug con l'ISE o con PowerGUI.
È inoltre possibile ottenere una trascrizione del proprio script utilizzando il cmdlet Start-Transcript
che scriverà tutte le attività della console in un file. Quindi puoi inserire affermazioni come Write-Host "Doing XYZ"
e quelle verranno visualizzate nel registro delle trascrizioni.
se si cattura eccezioni con un tentativo di cattura o di utilizzare una trappola è possibile scrivere il numero di riga e di colonna di eccezione in questo modo:
$ErrorActionPreference = 'Stop'
trap {
Write-Host "Error on line $($_.InvocationInfo.ScriptLineNumber)"
exit 1
}
try {
Get-Item DoesntExist
} catch {
Write-Host ("Error occurred on line: " + $_.InvocationInfo.ScriptLineNumber)
}
$_.InvocationInfo
ha altri dettagli riguardo erano l'errore proviene.
Impostando $ErrorActionPreference = "Stop"
si assicura che ogni errore fa scattare il blocco trap{}
, che in questo caso, scrive la riga dello script avuto modo ed esce.
Aggiunto altro sulla gestione degli errori 'trap {}', in quanto ciò consente di risolvere i problemi di qualsiasi errore senza bisogno di mettere 'try {} catch {}' su troppe dichiarazioni. –
- 1. tracciare il flusso di posta elettronica nella mappa utilizzando R
- 2. C++ collega il flusso di output al flusso di input
- 3. Tracciare e salvare il grafico R
- 4. Come tracciare per categoria?
- 5. Come tracciare il percorso in una ricerca di ampiezza prima?
- 6. Come tracciare il valore di ablina in R?
- 7. testo/flusso di eventi riconosciuto come download
- 8. Come tracciare l'esecuzione del codice in PHP?
- 9. Come posso tracciare una matrice di confusione?
- 10. Tracciare un frame di dati come tabella
- 11. Tracciare un numero di disuguaglianze come piani
- 12. Come evitare il flusso della pipeline SSE?
- 13. Come annullare NetworkStream.ReadAsync senza chiudere il flusso
- 14. Tracciare un'eccezione ignorata in Python?
- 15. Tracciare più linee come heatmap
- 16. Come tracciare "tcmalloc: grande alloc ...."
- 17. IOS: tracciare una linea con il dito
- 18. Come tracciare il tempo di esecuzione di ogni linea/blocco di linee/metodi in PHP?
- 19. Applicare il modello al flusso di file
- 20. layout di flusso con il contenuto centrata
- 21. Tracciare campagne email di massa
- 22. ottiene il contenuto di un flusso-lunghezza
- 23. Come tracciare un programma per il debug in OCaml?
- 24. Come faccio a tracciare il movimento usando OpenCV in Python?
- 25. Come si può tracciare il movimento usando la fotocamera dell'iPhone?
- 26. Matlab: come tracciare il testo 3D (non 2D come fa il testo di una funzione)
- 27. Come è possibile alternativamente il buffer e il flusso di un flusso di dati in tempo reale in Rx
- 28. Come tracciare il diagramma a barre sulla mappa ggplot2
- 29. Tracciare enormi file di dati in R?
- 30. Come smaltire il flusso di memoria che nell'attività?
Questo è esattamente quello che stavo cercando. Tuttavia, vedo il grande vantaggio nel capire come debugare correttamente, quindi ne esaminerò più avanti. –