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

Importante

Azure Data Lake Analytics retiró el 29 de febrero de 2024. Más información sobre este anuncio.

Para el análisis de datos, su organización puede usar Azure Synapse Analytics o Microsoft Fabric.

U-SQL proporciona un modelo de extensibilidad mediante C#. En los scripts U-SQL, es fácil llamar a funciones de C# y realizar funciones analíticas que el lenguaje declarativo similar a SQL no admite. 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 podría necesitar depuración, pero es difícil depurar un trabajo distribuido con código personalizado en la nube con 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. Seleccione Descargar para descargar todos los recursos necesarios y flujos de entrada. Si la descarga no se completa, seleccione Reintentar.

  2. Seleccione Abrir una vez completada la descarga para generar un 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.

Captura de pantalla de un trabajo de Data Lake Analytics en USQL con el botón Descargar resaltado.

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).

Captura de pantalla del código fuente de C# definido por el usuario, que muestra la configuración de excepciones con Common Language Runtime Exceptions set (Excepciones de Common Language Runtime).

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

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

  2. No encuentro mi 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 ejecuta hasta que se detiene mediante una excepción.

  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.

    Captura de pantalla del código definido por el usuario con un conjunto de puntos de interrupción, que muestra una excepción en la línea resaltada.

El código fuente no se incluye 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 registró el ensamblado con información de depuración, el código fuente no se incluye 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.

    Captura de pantalla del explorador de soluciones en Visual Studio, en la que se muestra la solución VertexDebug.

  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\.

    Captura de pantalla de la pestaña de compilación en Visual Studio Code, con la ruta de acceso de salida resaltada en Salida.

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).

Captura de pantalla de la ventana de salida, con la línea de finalización resaltada.

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