Depuración de código C# definido por el usuario para trabajos de U-SQL con errores

U-SQL proporciona un modelo de extensibilidad mediante C#. En los scripts de U-SQL es fácil llamar a funciones de C# y realizar funciones de análisis que no admitiría un lenguaje declarativo similar a SQL. Para más información sobre la extensibilidad de U-SQL, consulte la Guía de programación de U-SQL.

En la práctica, cualquier código puede necesitar depuración, pero es difícil depurar un trabajo distribuido con código personalizado en la nube con unos archivos de registro limitados. Las Herramientas de Azure Data Lake para Visual Studio incluyen una característica denominada depuración de vértice con errores, que ayuda a que sea más fácil depurar los errores que se producen en el código personalizado. Cuando se produce un error en el trabajo de U-SQL, el servicio conserva el estado de error y la herramienta le ayuda a descargar el entorno con error de la nube en la máquina local para su depuración. La descarga local captura todo el entorno en la nube, incluidos el código de usuario y los datos de entrada.

En el siguiente vídeo se demuestra la depuración de vértice con errores en las Herramientas de Azure Data Lake para Visual Studio.

Importante

Visual Studio requiere las siguientes dos actualizaciones para poder usar esta característica: Microsoft Visual C++ 2015 Redistributable Update 3 y Universal C Runtime en Windows.

Error al descargar el vértice en la máquina local

Al abrir un trabajo erróneo en Herramientas de Azure Data Lake para Visual Studio, verá una barra de alerta amarilla con mensajes de error detallados en la pestaña Error.

  1. Haga clic en Descargar para descargar todos los flujos de entrada y recursos necesarios. Si la descarga no se completa, haga clic en Reintentar.

  2. Haga clic en Abrir después de que finalice la descarga para generar el entorno de depuración local. Se abrirá una nueva solución de depuración y, si ya tiene una solución abierta en Visual Studio, asegúrese de guardarla y cerrarla antes de depurar.

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

Configuración del entorno de depuración

Nota

Antes de realizar la depuración, asegúrese de que ha activado Common Language Runtime Exceptions (Excepciones de Common Language Runtime) en la ventana de configuración de excepciones (Ctrl + Alt + E).

Azure Data Lake Analytics U-SQL debug visual studio setting

En la nueva instancia de Visual Studio iniciada puede que encuentre, o no, el código fuente en C# definido por el usuario:

  1. Puedo encontrar el código fuente en la solución

  2. No puedo encontrar el código fuente en la solución

El código fuente está incluido en la solución de depuración

Hay dos casos en los que se captura el código fuente en C#:

  1. El código de usuario se define en el archivo de código subyacente (normalmente denominado Script.usql.cs en un proyecto de U-SQL).

  2. El código de usuario se define en el proyecto de la biblioteca de clases C# de la aplicación de U-SQL y se registra como ensamblado con información de depuración.

Si el código fuente se importa en la solución, puede usar las herramientas de depuración de Visual Studio (visualización, variables, etc.) para solucionar el problema:

  1. Presiona F5 para iniciar la depuración. El código se ejecutará hasta que una excepción lo detenga.

  2. Abra el archivo de código fuente y establezca los puntos de interrupción. A continuación, pulse F5 para depurar el código paso por paso.

    Azure Data Lake Analytics U-SQL debug exception

El código fuente no está incluido en la solución de depuración

Si el código de usuario no se incluye en el archivo de código subyacente, o no se registró el ensamblado con información de depuración, el código fuente no se incluirá automáticamente en la solución de depuración. En este caso, deberá realizar pasos adicionales para agregar el código fuente:

  1. Haga clic con el botón derecho en Solution 'VertexDebug' > Add > Existing Project... (Solución 'VertexDebug' > Agregar > Proyecto existente...) para buscar el código fuente del ensamblado y agregar el proyecto a la solución de depuración.

    Azure Data Lake Analytics U-SQL debug add project

  2. Obtenga la ruta de la carpeta del proyecto FailedVertexDebugHost.

  3. Haga clic con el botón derecho en el proyecto agregado de código fuente del ensamblado > Propiedades, seleccione la pestaña Compilar a la izquierda y pegue la ruta de acceso que termina en \bin\debug en Salida > Ruta de acceso de resultados. La ruta de acceso de salida final es como <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\.

    Azure Data Lake Analytics U-SQL debug set pdb path

Después de esta configuración, inicie la depuración con F5 y los puntos de interrupción. También puede usar las herramientas de depuración de Visual Studio (visualización, variables, etc.) para solucionar el problema.

Nota

Recompile el proyecto de código fuente de ensamblado cada vez que modifique el código para generar archivos .pdb actualizados.

Reenviar el trabajo

Tras la depuración, si el proyecto se completa correctamente, la ventana de salida muestra el siguiente mensaje:

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

Azure Data Lake Analytics U-SQL debug succeed

Para volver a enviar el trabajo con error, haga lo siguiente:

  1. Para los trabajos con soluciones con código subyacente, copie el código de C# en el archivo de origen de código subyacente (normalmente, Script.usql.cs).

  2. Para los trabajos con ensamblados, haga clic con el botón derecho en el proyecto de código fuente del ensamblado en la solución de depuración y registre los ensamblados .dll actualizados en el catálogo de Azure Data Lake.

  3. Vuelva a enviar el trabajo de U-SQL.

Pasos siguientes