MySQL Server和大多数MySQL客户端都使用由Fred Fish创建的DBUG包编译。当您配置了MySQL进行调试时,此程序包使得可以获得程序正在行的跟踪文件。看第5.9.1.2节“创建跟踪文件”.
本节总结了可以在命令行调试选项中为使用调试支持构建的MySQL程序指定的参数值。
DBUG包可以通过调用带有--debug [=
或者debug_options.
]- # (
选项。如果您指定了debug_options.
]--debug.
或者- #
选择没有A.debug_options.
值,大多数MySQL程序使用默认值。服务器默认为D:T:i:o,/ tmp / mysqld.trace
在Unix和d:师:我:啊,\ mysqld.trace
在Windows上。默认的效果是:
d
:打开所有调试宏的输出t
:跟踪函数调用和退出我
:在输出行添加PID啊,/ tmp / mysqld.trace
,o,\ mysqld.trace
:设置调试输出文件。
大多数客户端程序使用默认值debug_options.
的价值d:师:o, / tmp /
,无论平台如何。program_name
.trace
下面是一些在shell命令行中指定的调试控制字符串的示例:
--debug = d:t --debug = d:f,main,subr1:f:l:t,20 --debug = d,输入,输出,文件:n --debug = d:t:i:o,\\ mysqld.trace.
为mysqld,也可以在运行时通过设置调试
系统变量。这个变量有全局值和会话值:
mysql> set global debug ='debug_options.”;mysql> set session debug ='debug_options.”;
改变全球调试
值需要足够的权限来设置全局系统变量。改变会话调试
值需要足以设置受限制会话系统变量的权限。看第5.1.9.1节“系统变量权限”.
的debug_options.
值是一系列冒号分离的字段:
Field_1:Field_2:...:Field_N
值中的每个字段由强制标志字符组成,可选地之前+
或者-
字符,以及可选择后跟逗号分隔的修饰符列表:
[+ | -]国旗(修饰符修饰符,…,修饰符)
下表介绍了允许的标志字符。无法识别的标志字符忽略了。
旗帜 |
描述 |
---|---|
|
启用DBUG_输出 在mysql中,常见的调试宏关键字要启用 |
|
在每个调试器输出行之后的延迟。争论的焦点是延迟,在十分之一秒内,取决于机器的能力。例如, |
|
将调试,跟踪和配置文件限制为命名函数列表。空列表启用所有功能。适当的 |
|
为每一行调试或跟踪输出标识源文件名。 |
|
为每行调试或跟踪输出的PID或线程ID标识该过程。 |
|
为每一行调试或跟踪输出标识源文件行号。 |
|
打印每行调试或跟踪输出的当前功能嵌套深度。 |
|
编号每行调试输出。 |
|
将调试器输出流重定向到指定的文件。默认输出是 |
|
喜欢 |
|
将调试器操作限制到指定的进程。过程必须用 |
|
打印每行调试或跟踪输出的当前进程名称。 |
|
push新状态时,不要继承前一个状态的函数嵌套级别。当输出从左边开始时很有用。 |
|
做功能 |
|
启用函数调用/退出跟踪行。后面可能跟着一个列表(只包含一个修饰符),给出最大跟踪级别的数值,超过这个级别,调试或跟踪宏都不会出现输出。默认值是编译时选项。 |
领先的+
或者-
修饰符的字符和尾随列表用于标记字符,如d
或者f
这可以为所有适用的修饰符或它们中的一些来启用调试操作:
没有领导
+
或者-
,标志值设置为完全按照给定的修改器列表。带领先
+
或者-
,列表中的修饰符将添加到当前修饰符列表中,或从当前修饰符列表中减去。
控件的工作原理如下所示d
旗帜。一个空的d
列出所有调试宏的已启用输出。非空列表只支持列表中宏关键字的输出。
这些陈述设置了d
值到修饰符列表,如下所示:
mysql> SET debug = 'd';mysql >选择@@debug;+---------+ | @@ 调试 | +---------+ | d | +---------+mysql.> SET debug = 'd,error,warning'; mysql> SELECT @@debug; +-----------------+ | @@debug | +-----------------+ | d,error,warning | +-----------------+
一个领先者+
或者-
增加或减少当前d
价值:
mysql> SET debug = '+d,loop';mysql >选择@@debug;+----------------------+ | @@ 调试 | +----------------------+ | d,错误、警告循环 | +----------------------+ mysql >设置debug =“- d、错误、循环”;mysql >选择@@debug;+-----------+ | @@ 调试 | +-----------+ | d,警告 | +-----------+
加入”所有宏都启用了”结果没有变化:
mysql> SET debug = 'd';mysql >选择@@debug;+---------+ | @@ 调试 | +---------+ | d | +---------+ mysql >设置debug = + d、循环的;mysql >选择@@debug;+---------+ | @@ 调试 | +---------+ | d | +---------+
禁用所有已启用的宏禁用d
全部标志:
mysql> SET debug = 'd,error,loop';mysql >选择@@debug;+--------------+ | @@ 调试 | +--------------+ | d、错误、循环 | +--------------+ mysql >设置debug =“- d、错误、循环”;mysql >选择@@debug;+---------+ | @@ 调试 | +---------+ | | +---------+