Partilhar via


Depurar código C# definido pelo usuário para tarefas U-SQL falhadas

Importante

O Azure Data Lake Analytics foi desativado em 29 de fevereiro de 2024. Saiba mais com este anúncio.

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

O U-SQL fornece um modelo de extensibilidade usando C#. Em 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 U-SQL, consulte Guia de programação 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. O Azure Data Lake Tools for Visual Studio fornece um recurso chamado Failed Vertex Debug, que ajuda você a depurar mais facilmente as falhas que ocorrem em seu código personalizado. Quando o trabalho U-SQL falha, o serviço mantém o estado de falha e a ferramenta ajuda você a baixar o ambiente de falha na nuvem para a máquina local para depuração. O download local captura todo o ambiente de nuvem, incluindo quaisquer dados de entrada e código do usuário.

O vídeo a seguir demonstra a depuração de vértice falhado no Azure Data Lake Tools para Visual Studio.

Importante

O Visual Studio requer as duas atualizações a seguir para usar esse recurso: Microsoft Visual C++ 2015 Redistributable Update 3 e o Universal C Runtime for Windows.

Baixar vértice com falha para a máquina local

Quando você abre um trabalho com falha no Azure Data Lake Tools for Visual Studio, você vê uma barra de alerta amarela com mensagens de erro detalhadas na guia de erro.

  1. Selecione Download 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 existente aberta no Visual Studio, certifique-se de salvá-la e fechá-la antes de depurá-la.

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

Configurar o ambiente de depuração

Observação

Antes de depurar, verifique as 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 o conjunto Common Language Runtime Exceptions.

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

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

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

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

Se o código-fonte for importado para a solução, você poderá usar as ferramentas de depuração do Visual Studio (monitoramento, 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 e pressione F5 para depurar o código passo a passo.

    Captura de tela do código definido pelo usuário com um ponto de interrupção definido, 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 se 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, você precisa de etapas extras para adicionar seu código-fonte:

  1. Clique com o botão direito do mouse em Solução 'VertexDebug' > Adicionar > projeto existente... para localizar 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. Obtenha o caminho da pasta do projeto FailedVertexDebugHost.

  3. Right-Click o projeto de código-fonte de assembly adicionado> Propriedades, selecione a aba Compilação à esquerda e cole o caminho copiado que termina com \bin\debug como caminho 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 tela da guia de compilação no Visual Studio Code, com o caminho de saída realçado em Saída.

Após essas definições, inicie a depuração com F5 e pontos de interrupção. Você também pode usar as ferramentas de depuração do Visual Studio (monitoramento, variáveis, etc.) para solucionar o problema.

Observação

Reconstrua o projeto de código-fonte do assembly cada vez depois de modificar o código para gerar 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 a tarefa falhada:

  1. Para tarefas com soluções de code-behind, copie o código C# para o ficheiro de origem do code-behind (normalmente Script.usql.cs).

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

  3. Reenvie o trabalho U-SQL.

Próximos passos