Eseguire il debug del codice C# definito dall'utente per i processi U-SQL non riusciti

Importante

Azure Data Lake Analytics ritirato il 29 febbraio 2024. Altre informazioni con questo annuncio.

Per l'analisi dei dati, l'organizzazione può usare Azure Synapse Analytics o Microsoft Fabric.

U-SQL fornisce un modello di estendibilità che usa C#. Negli script U-SQL è facile chiamare funzioni C# ed eseguire funzioni di analisi che il linguaggio dichiarativo come SQL non supporta. Per altre informazioni sull'estendibilità di U-SQL, vedere Guida alla programmabilità di U-SQL.

In pratica, qualsiasi codice potrebbe richiedere il debug, ma è difficile eseguire il debug di un processo distribuito con codice personalizzato nel cloud con file di log limitati. Strumenti Azure Data Lake per Visual Studio include una funzionalità denominata debug del vertice con errore, che consente di eseguire più facilmente il debug degli errori che si verificano nel codice personalizzato. Quando il processo U-SQL non riesce, il servizio mantiene lo stato di errore e lo strumento consente di scaricare l'ambiente dell'errore cloud nel computer locale per il debug. Il download locale acquisisce tutto l'ambiente cloud, inclusi eventuali dati di input e il codice utente.

Nel video seguente viene illustrata la funzione Debug del vertice con errore in Strumenti Azure Data Lake per Visual Studio.

Importante

Visual Studio richiede i due aggiornamenti seguenti per usare questa funzionalità: Aggiornamento di Microsoft Visual C++ 2015 Redistributable 3 e Universal C Runtime per Windows.

Scaricare il vertice con errori nel computer locale

Quando si apre un processo non riuscito in Strumenti Azure Data Lake per Visual Studio, viene visualizzata una barra di avviso gialla con messaggi di errore dettagliati nella scheda errore.

  1. Selezionare Scarica per scaricare tutte le risorse e i flussi di input necessari. Se il download non viene completato, selezionare Riprova.

  2. Selezionare Apri al termine del download per generare un ambiente di debug locale. Verrà aperta una nuova soluzione di debug e se si ha una soluzione esistente aperta in Visual Studio, assicurarsi di salvarla e chiuderla prima del debug.

Screenshot di un processo Data Lake Analytics in USQL con il pulsante Scarica evidenziato.

Configurare l'ambiente di debug

Nota

Prima del debug, assicurarsi di selezionare le Common Language Runtime Exceptions (Eccezioni di Common Language Runtime) nella finestra Impostazioni eccezioni (CTRL + ALT + E).

Screenshot del codice sorgente C# definito dall'utente, che mostra le impostazioni delle eccezioni con Common Language Runtime Exceptions impostata.

Nella nuova istanza di Visual Studio avviata potrebbe essere possibile o meno trovare il codice sorgente C# definito dall'utente:

  1. È possibile trovate il codice sorgente nella soluzione

  2. Non è possibile trovare il codice sorgente nella soluzione

Il codice sorgente è incluso nella soluzione di debug

Il codice sorgente C# viene acquisito in due casi:

  1. Il codice utente viene definito nel file code-behind (in genere denominato Script.usql.cs in un progetto U-SQL).

  2. Il codice utente viene definito nel progetto di tipo libreria di classi C# per l'applicazione U-SQL e registrato come assembly con le informazioni di debug.

Se il codice sorgente viene importato nella soluzione, è possibile usare gli strumenti di debug di Visual Studio, come espressioni di controllo, variabili e così via, per risolvere il problema:

  1. Premere F5 per avviare il debug. Il codice viene eseguito fino a quando non viene arrestato da un'eccezione.

  2. Aprire il file del codice sorgente e impostare i punti di interruzione, quindi premere F5 per eseguire nel dettaglio il debug del codice.

    Screenshot del codice definito dall'utente con un set di punti di interruzione, che mostra un'eccezione nella riga evidenziata.

Il codice sorgente non è incluso nella soluzione di debug

Se il codice utente non è incluso nel file code-behind o non è stato registrato l'assembly con informazioni di debug, il codice sorgente non viene incluso automaticamente nella soluzione di debug. In questo caso sono necessari passaggi aggiuntivi per aggiungere il codice sorgente:

  1. Fare clic con il pulsante destro del mouse su Soluzione 'VertexDebug' > Aggiungi > progetto esistente... per trovare il codice sorgente dell'assembly e aggiungere il progetto alla soluzione di debug.

    Screenshot di Esplora soluzioni in Visual Studio che mostra la soluzione VertexDebug.

  2. Ottenere il percorso della cartella del progetto FailedVertexDebugHost.

  3. Right-Click il progetto > di codice sorgente dell'assembly aggiunto, selezionare la scheda Compila a sinistra e incollare il percorso copiato che termina con \bin\debug come percorso output di output>. Il percorso di output finale è simile <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\a .

    Screenshot della scheda di compilazione in Visual Studio Code, con il percorso in uscita evidenziato in Output.

Dopo queste impostazioni, avviare il debug con F5 e i punti di interruzione. È anche possibile usare gli strumenti di debug di Visual Studio, come espressioni di controllo, variabili e così via, per risolvere il problema.

Nota

Ricreare il progetto di codice sorgente assembly dopo ogni modifica al codice per generare i file con estensione PDB aggiornati.

Inviare di nuovo il processo

Dopo il debug, se il progetto viene completato correttamente la finestra di output mostra il messaggio seguente:

The Program 'LocalVertexHost.exe' has exited with code 0 (0x0).

Screenshot della finestra di output con la riga di completamento evidenziata.

Per inviare di nuovo il processo non riuscito:

  1. Per i processi con soluzioni code-behind, copiare il codice C# nel file di origine code-behind, in genere Script.usql.cs.

  2. Per i processi con assembly, fare clic con il pulsante destro del mouse sul progetto di codice sorgente degli assembly nella soluzione di debug e registrare gli assembly DLL aggiornati nel catalogo di Azure Data Lake.

  3. Inviare nuovamente il processo U-SQL.

Passaggi successivi