Depurar código C# definido pelo utilizador para tarefas U-SQL falhadas

Importante

O Azure Data Lake Analytics descontinuado a 29 de fevereiro de 2024. Saiba mais com este anúncio.

Para análise de dados, a sua organização pode utilizar o Azure Synapse Analytics ou o Microsoft Fabric.

O U-SQL fornece um modelo de extensibilidade com C#. Nos scripts U-SQL, é fácil chamar funções C# e executar funções analíticas que a linguagem declarativa semelhante a SQL não suporta. Para saber mais sobre a extensibilidade do U-SQL, veja Guia de programação do U-SQL.

Na prática, qualquer código pode precisar de depuração, mas é difícil depurar uma tarefa distribuída com código personalizado na cloud com ficheiros de registo limitados. As Ferramentas do Azure Data Lake para Visual Studio fornecem uma funcionalidade denominada Depuração de Vértice Com Falhas, que o ajuda a depurar mais facilmente as falhas que ocorrem no seu código personalizado. Quando a tarefa U-SQL falha, o serviço mantém o estado de falha e a ferramenta ajuda-o a transferir o ambiente de falha da cloud para o computador local para depuração. A transferência local captura todo o ambiente da cloud, incluindo quaisquer dados de entrada e código de utilizador.

O vídeo seguinte demonstra a Falha na Depuração de Vértice nas Ferramentas do Azure Data Lake para Visual Studio.

Importante

O Visual Studio necessita das duas atualizações seguintes para utilizar esta funcionalidade: Microsoft Visual C++ 2015 Redistributable Update 3 e Universal C Runtime para Windows.

Transferir o vértice com falha para o computador local

Quando abre uma tarefa falhada no Azure Data Lake Tools para Visual Studio, vê uma barra de alerta amarela com mensagens de erro detalhadas no separador erro.

  1. Selecione Transferir para transferir todos os recursos e fluxos de entrada necessários. Se a transferência não for concluída, selecione Repetir.

  2. Selecione Abrir após a conclusão da transferência para gerar um ambiente de depuração local. Será aberta uma nova solução de depuração e, se tiver uma solução existente aberta no Visual Studio, certifique-se de que a guarda e fecha antes da depuração.

Captura de ecrã a mostrar uma tarefa de Data Lake Analytics no USQL com o botão Transferir realçado.

Configurar o ambiente de depuração

Nota

Antes da depuração, certifique-se de que verifica as Exceções de Runtime de Linguagem Comuns na janela Definições de Exceção (Ctrl + Alt + E).

Captura de ecrã a mostrar o código fonte C# definido pelo utilizador, com as definições de exceções com Exceções do Common Language Runtime definidas.

Na nova instância do Visual Studio iniciada, poderá ou não encontrar o código fonte C# definido pelo utilizador:

  1. Posso encontrar o meu código fonte na solução

  2. Não consigo encontrar o meu código fonte na solução

O código fonte está incluído na solução de depuração

Existem dois casos em que o código fonte C# é capturado:

  1. O código de utilizador é definido no ficheiro code-behind (normalmente denominado Script.usql.cs num projeto U-SQL).

  2. O código de utilizador é definido no projeto de biblioteca de classes C# para a aplicação U-SQL e registado como assemblagem com informações de depuração.

Se o código fonte for importado para a solução, pode utilizar as ferramentas de depuração do Visual Studio (watch, variáveis, etc.) para resolver o problema:

  1. Prima F5 para iniciar a depuração. O código é executado até ser parado por uma exceção.

  2. Abra o ficheiro de código fonte e defina pontos de interrupção e, em seguida, prima F5 para depurar o código passo a passo.

    Captura de ecrã do código definido pelo utilizador com um conjunto de pontos de interrupção a mostrar uma exceção na linha realçada.

O código fonte não está incluído na solução de depuração

Se o código de utilizador não estiver incluído no ficheiro protegido por código ou se não tiver registado a assemblagem com informações de depuração, o código fonte não será incluído automaticamente na solução de depuração. Neste caso, precisa de passos adicionais para adicionar o código fonte:

  1. Clique com o botão direito do rato em Solução "VertexDebug" > Adicionar > Projeto Existente... para localizar o código fonte de assemblagem e adicionar o projeto à solução de depuração.

    Captura de ecrã a mostrar o explorador de soluções no Visual Studio, com a Solução VertexDebug.

  2. Obtenha o caminho da pasta do projeto para o projeto FailedVertexDebugHost .

  3. Right-Click o projeto > de código fonte de assemblagem adicionado Propriedades, selecione o separador Compilar à esquerda e cole o caminho copiado que termina com \bin\debug como caminho saída de saída>. O caminho de saída final é como <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\.

    Captura de ecrã a mostrar o separador Compilar no Visual Studio Code, com o caminho de saída realçado em Saída.

Após estas definições, comece a depurar com F5 e pontos de interrupção. Também pode utilizar as ferramentas de depuração do Visual Studio (watch, variáveis, etc.) para resolver o problema.

Nota

Recrie o projeto de código fonte de assemblagem sempre que modificar o código para gerar ficheiros .pdb atualizados.

Submeter novamente a tarefa

Após a depuração, se o projeto for concluído com êxito, a janela de saída mostrará a seguinte mensagem:

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

Captura de ecrã da janela de saída, com a linha de conclusão realçada.

Para submeter novamente a tarefa falhada:

  1. Para tarefas com soluções protegidas por código, copie o código C# para o ficheiro de origem protegido por código (normalmente Script.usql.cs).

  2. Para tarefas com assemblagens, clique com o botão direito do rato no projeto de código fonte de assemblagem na solução de depuração e registe as assemblagens de .dll atualizadas no catálogo do Azure Data Lake.

  3. Volte a submeter a tarefa U-SQL.

Passos seguintes