В MySQL входит библиотека функций отладки, первоначально созданная Фредом Фишем (Fred Fish). Чтобы разрешить ее использование, нужно на этапе компиляции программы вызвать сценарий configure с опцией –with_debug. Если в распоряжении имеется бинарный дистрибутив, проверьте версию какого либо исполняемого файла. Программы, скомпилированные с поддержкой отладки, имеют суффикс –debug. Библиотека функций отладки является частью библиотеки mysqlclient. Макросы библиотеки объявлены в файле dbug.h.
Названия всех макросов начинаются с префикса DBUG_ (табл. 13.1). Если нужно отключить отладку, определите макроконстанту DBUG_OFF. При ее наличии все остальные макросы игнорируются.
Отладка функции начинается с того, что в ее начало помещается макрос DBUG ENTER(). Затем все вызовы инструкции return заменяются либо макросом DBUG ENTER(), либо DBUG VOID RETURN. Это позволяет отладчику определять, когда управление передается той или иной функции.
Макрос DBUG EXECUTE() помечает отдельную строку кода ключевым словом. Макрос DBUG PRINT записывает сообщение в отладочный файл. Можно напрямую работать с этим файлом благодаря макроконстанте DBUG FILE, в которой хранится его дескриптор.
В листинге показан пример отладки функции, которая вычисляет факториал заданного целого числа.
Программа, работающая с библиотекой функций отладки, обычно начинает отладку, вызывая макрос DBUG PUSH(). Утилиты MySQL включают отладку, если получен соответствующий аргумент командной строки или если установлена специальная переменная среды.
В табл. 13.2 перечислены флаги, понимаемые отладчиком и передаваемые макросу DBUG PUSH (). Они определяют, какая информация должна быть представлена в выходных данных. Строка формата выглядит как последовательность флагов, разделенных двоеточиями. Некоторые флаги требуют наличия параметров. Например, флаг d принимает список ключевых слов, разделенных запятыми.