Eseguire il debug del codice C# definito dall'utente per i processi U-SQL non riuscitiDebug user-defined C# code for failed U-SQL jobs

U-SQL fornisce un modello di estendibilità che usa C#.U-SQL provides an extensibility model using C#. Negli script U-SQL è possibile chiamare facilmente le funzioni C# ed eseguire funzioni di analisi non supportate dal linguaggio dichiarativo simile a SQL.In U-SQL scripts, it is easy to call C# functions and perform analytic functions that SQL-like declarative language does not support. Per altre informazioni sull'estendibilità di U-SQL, vedere Guida alla programmabilità di U-SQL.To learn more for U-SQL extensibility, see U-SQL programmability guide.

In pratica, qualsiasi codice può richiedere il debug, ma è difficile eseguire il debug di un processo distribuito con il codice personalizzato nel cloud con file di log limitati.In practice, any code may need debugging, but it is hard to debug a distributed job with custom code on the cloud with limited log files. 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.Azure Data Lake Tools for Visual Studio provides a feature called Failed Vertex Debug, which helps you more easily debug the failures that occur in your custom code. 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.When U-SQL job fails, the service keeps the failure state and the tool helps you to download the cloud failure environment to the local machine for debugging. Il download locale acquisisce tutto l'ambiente cloud, inclusi eventuali dati di input e il codice utente.The local download captures the entire cloud environment, including any input data and user code.

Nel video seguente viene illustrata la funzione Debug del vertice con errore in Strumenti Azure Data Lake per Visual Studio.The following video demonstrates Failed Vertex Debug in Azure Data Lake Tools for 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.Visual Studio requires the following two updates for using this feature: Microsoft Visual C++ 2015 Redistributable Update 3 and the Universal C Runtime for Windows.

Scaricare il vertice con errori nel computer localeDownload failed vertex to local machine

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.When you open a failed job in Azure Data Lake Tools for Visual Studio, you see a yellow alert bar with detailed error messages in the error tab.

  1. Fare clic su Scarica per scaricare tutte le risorse e i flussi di input necessari.Click Download to download all the required resources and input streams. Se il download non viene completato, fare clic su Riprova.If the download doesn't complete, click Retry.

  2. Fare clic su Apri dopo aver completato il download per generare l'ambiente di debug locale.Click Open after the download completes to generate a local debugging environment. Viene creata e aperta automaticamente una nuova istanza di Visual Studio con una soluzione di debug.A new Visual Studio instance with a debugging solution is automatically created and opened.

Vertice download visual studio debug U-SQL Azure Data Lake Analytics

Configurare l'ambiente di debugConfigure the debugging environment

Nota

Prima del debug, assicurarsi di selezionare le Common Language Runtime Exceptions (Eccezioni di Common Language Runtime) nella finestra Impostazioni eccezioni (CTRL + ALT + E).Before debugging, be sure to check Common Language Runtime Exceptions in the Exception Settings window (Ctrl + Alt + E).

Impostazione visual studio debug U-SQL Azure Data Lake Analytics

Nella nuova istanza di Visual Studio avviata è possibile trovare o meno il codice sorgente C# definito dall'utente:In the new launched Visual Studio instance, you may or may not find the user-defined C# source code:

  1. È possibile trovate il codice sorgente nella soluzioneI can find my source code in the solution

  2. Non è possibile trovate il codice sorgente nella soluzioneI cannot find my source code in the solution

Il codice sorgente è incluso nella soluzione di debugSource code is included in debugging solution

Il codice sorgente C# viene acquisito in due casi:There are two cases that the C# source code is captured:

  1. Il codice utente viene definito nel file code-behind (in genere denominato Script.usql.cs in un progetto U-SQL).The user code is defined in code-behind file (typically named Script.usql.cs in a U-SQL project).

  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.The user code is defined in C# class library project for U-SQL application, and registered as assembly with debug info.

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:If the source code is imported to the solution, you can use the Visual Studio debugging tools (watch, variables, etc.) to troubleshoot the problem:

  1. Premere F5 per avviare il debug.Press F5 to start debugging. Il codice viene eseguito fino a quando non viene interrotto da un'eccezione.The code runs until it is stopped by an exception.

  2. Aprire il file del codice sorgente e impostare i punti di interruzione, quindi premere F5 per eseguire nel dettaglio il debug del codice.Open the source code file and set breakpoints, then press F5 to debug the code step by step.

    Eccezione di debug U-SQL in Azure Data Lake Analytics

Il codice sorgente non è incluso nella soluzione di debugSource code is not included in debugging solution

Se il codice utente non è incluso nel file code-behind o non si è registrato l'assembly con le informazioni di debug, il codice sorgente non viene incluso automaticamente nella soluzione di debug.If the user code is not included in code-behind file, or you did not register the assembly with debug info, then the source code is not included automatically in the debugging solution. In questo caso sono necessari passaggi aggiuntivi per aggiungere il codice sorgente:In this case, you need extra steps to add your source code:

  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.Right-click Solution 'VertexDebug' > Add > Existing Project... to find the assembly source code and add the project to the debugging solution.

    Azure Data Lake Analytics U-SQL debug add project

  2. Ottenere il percorso della cartella del progetto FailedVertexDebugHost.Get the project folder path for FailedVertexDebugHost project.

  3. Fare clic con il pulsante destro del mouse sul progetto con codice sorgente assembly aggiunto > Proprietà, selezionare la scheda Compilazione a sinistra e incollare il percorso copiato che termina con \bin\debug in Output > Percorso output.Right-Click the added assembly source code project > Properties, select the Build tab at left, and paste the copied path ending with \bin\debug as Output > Output path. Il percorso di output finale è simile a "\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug".The final output path is like "\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug".

    Percorso pdb impostato per il debug U-SQL in Azure Data Lake Analytics

Dopo queste impostazioni, avviare il debug con F5 e i punti di interruzione.After these settings, start debugging with F5 and breakpoints. È anche possibile usare gli strumenti di debug di Visual Studio, come espressioni di controllo, variabili e così via, per risolvere il problema.You can also use the Visual Studio debugging tools (watch, variables, etc.) to troubleshoot the problem.

Nota

Ricreare il progetto di codice sorgente assembly dopo ogni modifica al codice per generare i file con estensione PDB aggiornati.Rebuild the assembly source code project each time after you modify the code to generate updated .pdb files.

Inviare di nuovo il processoResubmit the job

Dopo il debug, se il progetto viene completato correttamente la finestra di output mostra il messaggio seguente:After debugging, if the project completes successfully the output window shows the following message:

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

Debug U-SQL in Azure Data Lake Analytics completato correttamente

Per inviare di nuovo il processo non riuscito:To resubmit the failed job:

  1. Per i processi con soluzioni code-behind, copiare il codice C# nel file di origine code-behind, in genere Script.usql.cs.For jobs with code-behind solutions, copy the C# code into the code-behind source file (typically 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.For jobs with assemblies, right-click the assembly source code project in debugging solution and register the updated .dll assemblies into your Azure Data Lake catalog.

  3. Inviare nuovamente il processo U-SQL.Resubmit the U-SQL job.

Passaggi successiviNext steps