Compartilhar via


Depurar um código C# definido pelo usuário em trabalhos com falha do U-SQL

Importante

O Azure Data Lake Analytics desativado em 29 de fevereiro de 2024. Saiba mais nesse comunicado.

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

O U-SQL oferece um modelo de extensibilidade usando C#. Em scripts U-SQL, é fácil chamar funções C# e executar funções analíticas às quais a linguagem declarativa semelhante ao SQL não dá suporte. Para saber mais sobre a extensibilidade do U-SQL, consulte Guia de programação do U-SQL.

Na prática, qualquer código pode precisar de depuração, mas é difícil depurar um trabalho distribuído com código personalizado na nuvem com arquivos de log limitados. As Ferramentas do Azure Data Lake para Visual Studio oferecem um recurso chamado Falha na Depuração de Vértice, que ajuda a depurar de forma mais fácil as falhas que ocorrem no código personalizado. Quando o trabalho do U-SQL falha, o serviço mantém o estado de falha e a ferramenta ajuda a baixar o ambiente de falha da nuvem para o computador local a fim de realizar a depuração. O download local captura todo o ambiente de nuvem, incluindo dados de entrada e código do usuário.

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

Importante

O Visual Studio precisa destas duas atualizações para utilizar esse recurso: Microsoft Visual C++ 2015 Redistributable Atualização 3 e o Runtime C Universal do Windows.

Baixar o vértice com falha no computador local

Ao abrir um trabalho com falha nas Ferramentas do Azure Data Lake para Visual Studio, você verá uma barra amarela de alerta com mensagens de erro detalhadas na guia de erros.

  1. Selecione Baixar para baixar todos os recursos e fluxos de entrada necessários. Se o download não for concluído, selecione Repetir.

  2. Selecione Abrir após a conclusão do download para gerar um ambiente de depuração local. Uma nova solução de depuração será aberta e, se você tiver uma solução já existente aberta no Visual Studio, não deixe de salvá-la e fechá-la antes de depurar.

Captura de tela de um trabalho de Data Lake Analytics no USQL com o botão Baixar realçado.

Configurar o ambiente de depuração

Observação

Antes da depuração, marque a opção Exceções do Common Language Runtime na janela Configurações de Exceção (Ctrl + Alt + E).

Captura de tela do código-fonte C# definido pelo usuário, mostrando as configurações de exceções com exceções do Common Language Runtime definidas.

Na nova instância do Visual Studio iniciada, você pode ou não encontrar o código-fonte C# definido pelo usuário:

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

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

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

Há dois casos em que o código-fonte C# é capturado:

  1. O código do usuário é definido no arquivo code-behind (normalmente denominado Script.usql.cs em um projeto do U-SQL).

  2. O código do usuário é definido no projeto de biblioteca de classes em C# para o aplicativo U-SQL e registrado como um assembly com informações de depuração.

Se o código-fonte for importado para a solução, será possível usar as ferramentas de depuração do Visual Studio (inspeção, variáveis etc.) para solucionar o problema:

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

  2. Abra o arquivo de código-fonte e defina pontos de interrupção. Em seguida, pressione F5 para depurar o código passo a passo.

    Captura de tela do código definido pelo usuário com um conjunto de pontos de interrupção, mostrando 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 do usuário não estiver incluído no arquivo code-behind ou você não tiver registrado o assembly com informações de depuração, o código-fonte não será incluído automaticamente na solução de depuração. Nesse caso, serão necessárias mais etapas para adicionar o código-fonte:

  1. Clique com o botão direito do mouse em Solução “VertexDebug” > Adicionar > Projeto Existente... para encontrar o código-fonte do assembly e adicionar o projeto à solução de depuração.

    Captura de tela do gerenciador de soluções no Visual Studio mostrando a Solução VertexDebug.

  2. Obter o caminho da pasta do projeto FailedVertexDebugHost.

  3. Clique com o botão direito do mouse no projeto de código-fonte do assembly adicionado > Propriedades, selecione a guia Compilar à esquerda e cole o final do caminho copiado com \bin\debug como Saída > Caminho de saída. O caminho de saída final é <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\.

    Captura de tela da guia de build no Visual Studio Code, com o caminho de saída realçado em Saída.

Depois de aplicar essas configurações, comece a depurar com a tecla F5 e os pontos de interrupção. Você também pode usar as ferramentas de depuração do Visual Studio (inspeção, variáveis, etc.) para solucionar o problema.

Observação

Recompile o projeto de código-fonte do assembly sempre depois de modificar o código para gerar os arquivos .pdb atualizados.

Reenviar o trabalho

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 tela da janela de saída, com a linha de conclusão realçada.

Para reenviar o trabalho com falha:

  1. Para trabalhos com soluções code-behind, copie o código C# para o arquivo de origem code-behind (geralmente, Script.usql.cs).

  2. Para trabalhos com assemblies, clique com o botão direito do mouse no projeto de código-fonte do assembly na solução de depuração e registre os assemblies .dll atualizados no catálogo do Azure Data Lake.

  3. Envie novamente o trabalho do U-SQL.

Próximas etapas