7.9.4 Пакет DBUG
Сервер MySQL и большинство клиентов MySQL скомпилированы с пакетом DBUG, первоначально созданным Фредом Фишем. При настройке MySQL для отладки этот пакет позволяет получить файл трассировки того, что делает программа. См. Раздел 7.9.1.2, «Создание файлов трассировки».
В этом разделе обобщены значения аргументов, которые можно указать в параметрах отладки в командной строке для программ MySQL, скомпилированных с поддержкой отладки.
Пакет DBUG можно использовать, вызвав программу с опцией --debug[= или debug_options]-# [. Если вы укажете опцию debug_options]--debug или -# без значения debug_options, большинство программ MySQL используют значение по умолчанию. Значение по умолчанию для сервера — d:t:i:o,/tmp/mysqld.trace в Unix и d:t:i:O,\mysqld.trace в Windows. Эффект этого значения по умолчанию:
d: Включить вывод для всех макросов отладкиt: Отслеживать вызовы и завершения функцийi: Добавлять PID к строкам выводаo,/tmp/mysqld.trace,O,\mysqld.trace: Установить файл вывода отладки.
Большинство клиентских программ используют значение по умолчанию для debug_options, равное d:t:o,/tmp/, независимо от платформы. program_name.trace
Ниже приведены примеры строк управления отладкой, как они могут быть указаны в командной строке оболочки:
--debug=d:t
--debug=d:f,main,subr1:F:L:t,20
--debug=d,input,output,files:n
--debug=d:t:i:O,\\mysqld.trace
Для mysqld также можно изменить настройки DBUG во время выполнения, задав системную переменную debug. Эта переменная имеет глобальные и сессионные значения:
mysql> SET GLOBAL debug = 'debug_options';
mysql> SET SESSION debug = 'debug_options';
Изменение глобального значения debug требует привилегий, достаточных для установки глобальных системных переменных. Изменение сессионного значения debug требует привилегий, достаточных для установки ограниченных сессионных системных переменных. См. Раздел 7.1.9.1, «Привилегии на системные переменные».
Значение debug_options представляет собой последовательность полей, разделенных двоеточием:
field_1:field_2:...:field_N
Каждое поле в значении состоит из обязательного символа флага, необязательно предваряемого символом + или -, и необязательно сопровождаемого списком модификаторов, разделенных запятыми:
[+|-]flag[,modifier,modifier,...,modifier]
В следующей таблице описаны разрешенные символы флагов. Нераспознанные символы флагов игнорируются.
Флаг | Описание |
|---|---|
|
Включить вывод из макросов В MySQL распространенными ключевыми словами макросов отладки для включения являются |
| Задержка после каждой строки вывода отладчика. Аргумент — задержка в десятых долях секунды, в зависимости от возможностей машины. Например, |
| Ограничить отладку, трассировку и профилирование списком именованных функций. Пустой список включает все функции. Необходимые флаги |
| Указать имя файла источника для каждой строки вывода отладки или трассировки. |
| Указать процесс с помощью PID или идентификатора потока для каждой строки вывода отладки или трассировки. |
| Указать номер строки файла источника для каждой строки вывода отладки или трассировки. |
| Выводить текущую глубину вложенности функций для каждой строки вывода отладки или трассировки. |
| Нумеровать каждую строку вывода отладки. |
| Перенаправить поток вывода отладчика в указанный файл. Файл по умолчанию — |
| Как |
| Как |
| Как |
| Ограничить действия отладчика указанными процессами. Процесс должен быть идентифицирован с помощью макроса |
| Выводить текущее имя процесса для каждой строки вывода отладки или трассировки. |
| При нажатии на новую запись не унаследовать уровень вложенности функции предыдущего состояния. Полезно, когда вывод должен начинаться с левого края. |
| Включить строки трассировки вызова/завершения функции. За ним может следовать список (содержащий только один модификатор), задающий максимальный уровень трассировки в числовом выражении, после которого никакой вывод не происходит для макросов отладки или трассировки. По умолчанию это опция времени компиляции. |
| Выводить текущую метку времени для каждой строки вывода. |
Ведущий символ + или - и последующий список модификаторов используются для символов флагов, таких как d или f, которые могут включить операцию отладки для всех применимых модификаторов или только для некоторых из них:
Без ведущего
+или-значение флага устанавливается ровно в указанный список модификаторов.С ведущим
+или-модификаторы в списке добавляются к или вычитаются из текущего списка модификаторов.
Следующие примеры показывают, как это работает для флага d. Пустой список d включал вывод для всех макросов отладки. Непустой список включает вывод только для макросов в списке.
Эти операторы устанавливают значение d в указанный список модификаторов:
mysql> SET debug = 'd';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| d |
+---------+
mysql> SET debug = 'd,error,warning';
mysql> SELECT @@debug;
+-----------------+
| @@debug |
+-----------------+
| d,error,warning |
+-----------------+
Ведущий + или - добавляет к или вычитает из текущего значения d:
mysql> SET debug = '+d,loop';
mysql> SELECT @@debug;
+----------------------+
| @@debug |
+----------------------+
| d,error,warning,loop |
+----------------------+
mysql> SET debug = '-d,error,loop';
mysql> SELECT @@debug;
+-----------+
| @@debug |
+-----------+
| d,warning |
+-----------+
Добавление к “все макросы включены” не приводит к изменениям:
mysql> SET debug = 'd';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| d |
+---------+
mysql> SET debug = '+d,loop';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| d |
+---------+
Отключение всех включенных макросов полностью отключает флаг d:
mysql> SET debug = 'd,error,loop';
mysql> SELECT @@debug;
+--------------+
| @@debug |
+--------------+
| d,error,loop |
+--------------+
mysql> SET debug = '-d,error,loop';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| |
+---------+
© 2025 Oracle
Licensed under the GPLv2 License.