Отладка определяемого пользователем кода C# для заданий U-SQL, завершившихся сбоем

U-SQL поддерживает для C# модель расширяемости. В скриптах U-SQL можно легко вызывать функции C# и выполнять аналитические функции, которые не поддерживаются в декларативных языках, близких к SQL. Дополнительные сведения о расширяемости U-SQL см. в руководстве по программированию U-SQL.

Как подтверждает практика, отладка может потребоваться для любого кода. Эта задача усложняется, если вы используете распределенное задание, для которого в облаке размещен пользовательский код и доступно лишь ограниченное количество файлов журнала. Средства Azure Data Lake для Visual Studio поддерживают отладку вершины с ошибками, которая помогает отлаживать ошибки, возникающие в пользовательском коде. Когда происходит сбой задания U-SQL, служба сохраняет состояние сбоя и позволяет с помощью специального средства скачать облачную среду на момент сбоя, чтобы выполнить отладку на локальном компьютере. В пакете для скачивания содержится вся облачная среда, включая все входные данные и пользовательский код.

Следующее видео демонстрирует использование отладки вершины с ошибками в средствах Azure Data Lake для Visual Studio.

Важно!

Чтобы использовать эту возможность в Visual Studio, необходимо установить следующие два обновления: Распространяемый компонент Microsoft Visual C++ 2015, обновление 3 и Универсальная среда выполнения C для Windows.

Загрузка на локальный компьютер вершины, в которой произошел сбой

Открывая невыполненное задание в средствах Azure Data Lake для Visual Studio, вы получите оповещение в желтой области оповещений; подробные сведения об ошибке также отобразятся на вкладке "Ошибка".

  1. Нажмите кнопку Скачать , чтобы скачать все необходимые ресурсы и входные потоки. Нажмите кнопку Повторить, если не удалось скачать.

  2. Когда загрузка завершится, щелкните Открыть для создания локальной среды отладки. Откроется новое решение для отладки. Если в Visual Studio открыто существующее решение, сохраните и закройте его перед отладкой.

Azure Data Lake Analytics U-SQL debug visual studio download vertex

Настройка среды отладки

Примечание

Перед отладкой обязательно проверьте исключения среды CLR в окне параметров исключений (клавиши CTRL+ALT+E).

Azure Data Lake Analytics U-SQL debug visual studio setting

Новый экземпляр Visual Studio может содержать или не содержать исходный пользовательский код на C#.

  1. Исходный код есть в решении

  2. Исходный код не удается найти в решении

Исходный код включен в решение для отладки

Существует два случая, когда исходный код C# сохраняется:

  1. пользовательский код определен в файле кода программной части (обычно с именем Script.usql.cs в проекте U-SQL);

  2. пользовательский код определен в проекте библиотеки классов C# для приложения U-SQL и зарегистрирован как сборка со сведениями об отладке.

Если исходный код импортирован в решение, для устранения неполадок можно использовать все средства отладки в Visual Studio (контрольные значения, переменные и т. д.).

  1. Нажмите клавишу F5 , чтобы начать отладку. Код будет выполняться до тех пор, пока не возникнет исключение.

  2. Откройте файл исходного кода и задайте точки останова, затем нажмите клавишу F5 для пошаговой отладки кода.

    Azure Data Lake Analytics U-SQL debug exception

Исходный код не включен в решение для отладки

Если пользовательский код не включен в файл кода программной части или вы не зарегистрировали сборку со сведениями об отладке, исходный код не будет автоматически включен в решение для отладки. В этом случае нужно добавить исходный код.

  1. Щелкните правой кнопкой мыши решение "VertexDebug" > Add > Existing Project..., чтобы найти исходный код сборки и добавить проект в решение отладки.

    Azure Data Lake Analytics U-SQL debug add project

  2. Получите путь к папке проекта FailedVertexDebugHost.

  3. Right-Click свойства проекта > проекта исходного кода добавленной сборки, перейдите на вкладку "Сборка " слева и вставьте скопированный путь, заканчивающийся на \bin\debug в качестве выходного > пути. Окончательный выходной путь похож на <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\.

    Azure Data Lake Analytics U-SQL debug set pdb path

Завершив эти настройки, начните отладку с помощью клавиши F5 и точек останова. Для устранения неполадок можно просто использовать все возможности Visual Studio для отладки (контрольные значения, переменные и т. д.).

Примечание

Проект исходного кода сборок необходимо перестраивать после каждого изменения кода, чтобы использовать новые PDB-файлы.

Повторная отправка задания

Когда отладка будет завершена, после успешного выполнения проекта в окне вывода отобразится следующее сообщение:

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

Azure Data Lake Analytics U-SQL debug succeed

Чтобы повторно отправить невыполненное задание, выполните следующие действия.

  1. Для заданий с кодом программной части скопируйте код C# в файл с кодом программной части (обычно Script.usql.cs).

  2. Для заданий со сборками щелкните правой кнопкой мыши проект сборки исходного кода в решении для отладки и зарегистрируйте обновленные DLL-файлы сборки в каталог Azure Data Lake.

  3. Повторно отправьте задание U-SQL.

Дальнейшие действия