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.
Seleccione Descargar para descargar todos los recursos necesarios y flujos de entrada. Si la descarga no se completa, seleccione Reintentar.
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.
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).
En la nueva instancia de Visual Studio iniciada, es posible que encuentre o no el código fuente de C# definido por el usuario:
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#:
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).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:
Presiona F5 para iniciar la depuración. El código se ejecuta hasta que se detiene mediante una excepción.
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.
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:
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.
Obtenga la ruta de la carpeta del proyecto FailedVertexDebugHost.
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\
.
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).
Para volver a enviar el trabajo con error, haga lo siguiente:
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
).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.
Vuelva a enviar el trabajo de U-SQL.