Сервер MySQL и большинство клиентов MySQL компилируются с пакетом DBUG,
автором первой версии которого является Фред Фиш (Fred Fish). При
конфигурации MySQL в отладочном режиме этот пакет дает возможность
получить трассировочный файл для отладки программы. See Раздел D.1.2, «Создание трассировочных файлов».
Чтобы воспользоваться пакетом отладки, следует в вызове программы задать
опцию --debug="..." или -#...
Большинство программ MySQL по умолчанию имеют отладочную строку, которая будет
использована, если не задана опция --debug. По умолчанию
трассировочный файл обычно находится в /tmp/имя_программы.trace под Unix и
в \имя_программы.trace под Windows.
Строка управления отладкой представляет собой последовательность разделенных двоеточиями полей, как в следующем примере:
<field_1>:<field_2>:...:<field_N>
Каждое поле состоит из обязательного флагового символа, за которым следует необязательный символ "," и разделенный запятыми список модификаторов:
flag[,modifier,modifier,...,modifier]
В настоящее время распознаются следующие символы флагов:
| Флаг | Описание |
| d | Разрешает вывод из макроса DBUG_<N> для текущего состояния. За этим
флагом может следовать список ключевых слов. Если задан такой список, то
из вывода макроса DBUG будет выбираться вывод только с данными ключевыми
словами. Если задан пустой список ключевых слов, выбирается вывод всего
макроса.
|
| D | Задает задержку вывода после каждой строки отладчика. Аргумент
представляет собой количество десятых долей секунд задержки в
соответствии с возможностями машины. Т.е. D,20 означает задержку в две
секунды.
|
| f | Ограничивает отладку и/или трассировку и профайлинг только перечисленными
в списке функциями. Обратите внимание: если задан нулевой список, то
будут заблокированы все функции. Соответствующие флаги "d" или "t" должны
также задаваться, данный флаг только ограничивает их действия, если они
разрешены.
|
| F | Идентифицирует имя исходного файла для каждой строки вывода отладки или трассировки. |
| i | Идентифицирует процесс указанием pid или идентификатором потока (thread id) в каждой строке вывода отладки или трассировки.
|
| g | Разрешает профайлинг. Создает файл с именем dbugmon.out, содержащий
информацию, которую можно использовать для профайлинга программы. За этим
флагом может следовать список ключевых слов; если такой список задан, то
профайлинг будет применяться только для функций из этого списка. Если
задан нулевой список ключевых слов, то профайлинг применяется ко всем
функциям.
|
| L | Идентифицирует номер строки исходного файла для каждой строки вывода отладки или трассировки. |
| n | Задает вывод глубины вложенности текущей функции для каждой строки вывода отладки или трассировки. |
| N | Задает нумерацию каждой строки в выводе dbug.
|
| o | Переадресует выходной поток отладчика в указанный файл. По умолчанию вывод осуществляется в stderr. |
| O | То же, что и o, но указанный файл сбрасывается на диск каждый раз между
операциями записи. При необходимости этот файл закрывается и снова
открывается каждый раз между операциями записи.
|
| p | Ограничивает действия отладчика указанным процессом. Процесс должен быть
идентифицирован макросом DBUG_PROCESS и совпадать с указанным в списке
для действий отладчика.
|
| P | Выводит имя текущего процесса для каждой строки вывода отладки или трассировки. |
| r | Не наследовать уровень вложенности функции в предыдущем состоянии при переходе в новое состояние. Полезно, если вывод должен начинаться с левого поля. |
| S | Выполнять функцию _sanity(_file_,_line_) для каждой отлаженной функции,
пока _sanity() не возвратит значение, отличное от 0. (Главным
образом используется совместно с safemalloc для определения утечек
памяти).
|
| t | Разрешает трассировку вызовов функций/выход из функций. За этим параметром может следовать список (содержащий только один модификатор). Данный модификатор задает число - максимальный уровень вложения функций, ниже которого не производится вывод ни для отладочного, ни для трассировочного макросов. Параметр по умолчанию задается во время компиляции. |
Ниже представлены некоторые примеры строк управления отладкой, которые
можно применять в командной строке оболочки (символ "-#" обычно
используется для внедрения управляющей строки в программу):
-#d:t -#d:f,main,subr1:F:L:t,20 -#d,input,output,files:n -#d:t:i:O,\\mysqld.trace
В MySQL обычно применяются следующие дескрипторы для вывода (совместно с
опцией d): enter,exit,error,warning,info и loop.