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

Важно!

Поддержка Azure Data Lake Analytics прекращена 29 февраля 2024 г. Дополнительные сведения см. в этом объявлении.

Для аналитики данных ваша организация может использовать Azure Synapse Analytics или Microsoft Fabric.

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 открыто существующее решение, сохраните и закройте его перед отладкой.

Снимок экрана: задание Data Lake Analytics в USQL с выделенной кнопкой

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

Примечание

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

Снимок экрана: пользовательский исходный код C#, показывающий параметры исключений с установленными исключениями среды CLR.

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

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

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

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

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

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

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

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

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

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

    Снимок экрана: пользовательский код с набором точек останова с исключением в выделенной строке.

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

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

  1. Щелкните правой кнопкой мыши Решение "VertexDebug" > Добавить > существующий проект... , чтобы найти исходный код сборки и добавить проект в решение для отладки.

    Снимок экрана: обозреватель решений в Visual Studio с решением VertexDebug.

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

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

    Снимок экрана: вкладка сборки в Visual Studio Code с выделенным исходящим путем в разделе Выходные данные.

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

Примечание

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

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

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

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

Снимок экрана: окно вывода с выделенной строкой завершения.

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

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

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

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

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