Программа, работающая с библиотекой функций отладки, обычно начинает отладку, вызывая макрос DBUG PUSH(). Утилиты MySQL включают отладку, если получен соответствующий аргумент командной строки или если установлена специальная переменная среды.
В табл. 13.2 перечислены флаги, понимаемые отладчиком и передаваемые макросу DBUG PUSH (). Они определяют, какая информация должна быть представлена в выходных данных. Строка формата выглядит как последовательность флагов, разделенных двоеточиями. Некоторые флаги требуют наличия параметров. Например, флаг d принимает список ключевых слов, разделенных запятыми.
Таблица 13.2.
Флаг
Описание
d [, ключевые слова]
Этот флаг разрешает выводить информацию макросам с именами вида DBUG ключевое слово. Если список ключевых слов не указан, то подразумеваются все макросы. Ключевые слова должны задаваться без префикса DBUG.
D [,время]
Этот флаг свидетельствует о том, что вывод отладочной информации должен быть задержан на указанное число десятых долей секунды. Например, флаг D, 25 означает, что при выводе каждой строки будет выдерживаться пауза длительностью 2,5 секунды.
f [,функции]
Этот флаг разрешает выводить отладочную информацию только из указанных функций. Например, флагf main означает, что будут включены макросы, находящиеся в теле функции main ().
F
Этот флаг указывает на то, что каждую строку отладочной информации необходимо сопровождать именем исходного файла.
g
Этот флаг включает режим профилирования. В результате будет создан файл dbugmon.out. В качестве аргумента может быть указан список функций, для которых выполняется профилирование. В противном случае подразумеваются все функции. Более подробную информацию об этом можно найти в файле dbug/readme.prof дистрибутива MySQL
i
Этот флаг указывает на то, что каждую строку отладочной информации необходимо сопровождать идентификатором процесса или потока, в зависимости от контекста.
L
Этот флаг указывает на то, что каждую строку отладочной информации необходимо сопровождать номером строки исходного файла.
n
Этот флаг указывает на то, что каждую строку отладочной информации необходимо сопровождать информацией о глубине вызова текущей функции.
N
Этот флаг включает нумерацию строк в файле отладки.
о [, файл]
Этот флаг говорит о том, что отладочная информация должна направляться в указанный файл. По умолчанию эта информация отображается на экране, но многие клиентские программы изменяют данную установку, создавая в каталоге /tmp файл с именем программы и расширением .Trace.
О [, файл]
Этот флаг аналогичен флагу o, но после каждой записи в файл будет очищаться файловый буфер
P [, процессы]
Этот флаг разрешает выводить отладочную информацию только указанным процессам. Имя процесса должно быть задано с помощью макроса DBUG_PROCESS
Р
Этот флаг указывает на то, что каждую строку отладочной информации необходимо сопровождать именем процесса
r
Этот флаг заставляет выравнивать выводимую информацию по левому краю экрана после вызова макроса DBUG PUSH ().
S
При наличии этого флага отладчик будет вызывать функцию sanity(file, line) для каждой отлаживаемой функции, пока первая не вернет значение, отличное от нуля
t [, уровень]
Этот макрос включает вывод строк, помечающих точки вызова и завершения функций. Через запятую может быть указан максимальный уровень трассировки, по достижении которого отладочная и трассировочная информация перестает выводиться.
Исходная документация, написанная Фредом Фишем, находится в файле dbug/user.r в исходном каталоге MySQL. С помощью утилиты nroff этот файл можно преобразовать в формат Postscript или в текстовый формат.