5.8.3 Пакет DBUG
Сервер MySQL и большинство клиентов MySQL компилируются с пакетом DBUG, первоначально созданным Фредом Фишем. При конфигурации MySQL для отладки этот пакет позволяет получить файл трассировки действий программы. См. раздел 5.8.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 требует привилегий, достаточных для установки ограниченных сессионных системных переменных. См. раздел 5.1.8.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.