Сервер MySQL и большинство клиентов MySQL компилируются с пакетом DBUG , автором первой версии которого является Фред Фиш (Fred Fish). При конфигурации MySQL в отладочном режиме этот пакет дает возможность получить трассировочный файл для отладки программы. См. раздел Создание трассировочных файлов.
Чтобы воспользоваться пакетом отладки, следует в вызове программы задать опцию --debug="..." или -#...
Большинство программ MySQL по умолчанию имеют отладочную строку, которая будет использована, если не задана опция --debug . По умолчанию трассировочный файл обычно находится в '/tmp/имя_программы.trace' под Unix и в '\имя_программы.trace' под Windows.
Строка управления отладкой представляет собой последовательность разделенных двоеточиями полей, как в следующем примере:
::...:
Каждое поле состоит из обязательного флагового символа, за которым следует необязательный символ "," и разделенный запятыми список модификаторов:
flag[,modifier,modifier,...,modifier]
В настоящее время распознаются следующие символы флагов:
Флаг | Описание | d | Разрешает вывод из макроса DBUG_ для текущего состояния. За этим флагом может следовать список ключевых слов. Если задан такой список, то из вывода макроса 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 .
8 8 8
| |