Глава 11. Отладка хранимых процедур и функций

Отладчик хранимой процедуры предоставляет средства для урегулирования точек останова, продвижения в отдельные запросы (Step Into, Step Out, Step Over), вычисления и изменения значения локальной переменной и другие задачи отладки.

Привилегии

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

Отладчик вносит изменения негласно, чтобы временно добавить код инструментовки к сохраненным процедурам. Вы должны иметь привилегию ALTER ROUTINE для каждой хранимой процедуры, функции или триггера, который вы отлаживаете (включая процедуры и функции, которые вызваны, и триггеры, которые запущены процедурой, которую вы отлаживаете).

Запуск отладчика

Для запуска отладчика:

  1. Выберите связь в Visual Studio Server Explorer.

  2. Откройте папку Stored Procedures. Только хранимые процедуры могут быть отлажены непосредственно. Чтобы отладить определенную пользователями функцию, создайте хранимую процедуру, которая вызывает функцию.

  3. Нажмите на узел хранимой процедуры, затем щелкните правой кнопкой мыши и из контекстного меню выберите Debug Routine.

    Рис. 11.1. Выбор хранимой процедуры для отладки

    Screen capture of stored procedure debugger,
showing how to choose a stored routine to debug

Применение

Visual Studio переключается в режим отладки, открывая исходный код процедуры, отлаживаемой в пошаговом режиме, помещенной на первый запрос.

Если у начальной процедуры, которую вы отлаживаете, будут один или несколько аргументов, выводится всплывающее окно с сеткой (строка на каждый аргумент и три столбца: один для аргумента, один для значения аргумента (редактируемый) и один для аннулирования этого значения аргумента (флажок). После подготовки всех значений аргументов можно нажать OK, чтобы начать сеанс отладки или Cancel, чтобы отменить сеанс отладки.

Рис. 11.2. Установка параметров (1 из 2)

Setting Arguments (1 of 2)

Рис. 11.3. Установка параметров (2 из 2)

Setting Arguments (2 of 2)

Как отлаживать функции

Чтобы иметь видимость внутренней работы сохраненных процедур, отладчик готовит специальную версию процедуры, функции или триггера с дополнительным кодом, чтобы отслеживать текущую строку и значения всех локальных переменных. Любые другие хранимые процедуры, функции или триггеры, вызванные из отлаживаемой процедуры, инструментованы так же. Отладочные версии подготовлены автоматически, и когда сеанс отладки заканчивается (или нажато F5 или Shift + F5), исходные версии автоматически восстановлены.

Копия исходной версии каждой инструментованной процедуры (версия без инструментовки) сохранена в папке AppData\Roaming\MySqlDebuggerCache для текущего пользователя Windows (путь, возвращенный, вызывая System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) в .NET с добавлением MySqlDebuggerCache. Есть один файл для каждого инструментованного кода, с именем routine_name .mysql. Например, в Windows 7 для пользователя fergs путь будет C:\Users\fergs\AppData\Roaming\MySqlDebuggerCache .

Два потока используются, одна для отладчика и одна для отлаживаемой процедуры. Потоки работают в строгом чередовании, переключаяясь между отладчиком и процедурой.

Основные операции по отладке

У отладчика есть тот же самый стиль как у стандартных отладчиков Visual Studio для C#, VB.NET или C++. В частности, следующее верно:

Locals и Watches

Call Stack

Stepping

Breakpoints

Другие особенности

Ограничения

Клавиатурные сокращения

Следующий список суммирует клавиши быстрого вызова для отладки: