MySQL服务器和大多数MySQL客户端都是用Fred Fish最初创建的DBUG包编译的。当您将MySQL配置为调试时,这个包就可以获得程序正在执行的操作的跟踪文件。看到第5.8.1.2节“创建跟踪文件”.
本节总结了可以在命令行上的调试选项中指定的参数值,这些参数值用于构建了调试支持的MySQL程序。
方法调用程序可以使用DBUG包——调试(=
或debug_options
]- # (
选择。如果指定debug_options
]——调试
或- #
选择没有debug_options
值,大多数MySQL程序使用默认值。服务器默认值为d:师:我:啊,/ 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,也可以在运行时更改DBUG设置调试
系统变量。该变量有全局值和会话值:
设置全局调试= 'debug_options”;设置会话调试= 'debug_options”;
改变全球调试
值需要足够的权限来设置全局系统变量。改变会话调试
值需要足够的权限来设置受限制的会话系统变量。看到第5.1.8.1节“系统变量特权”.
的debug_options
值是由冒号分隔的字段组成的序列:
field_1: field_2:……:field_N
值中的每个字段都由一个强制标志字符组成,前面可选地加上+
或-
字符,并可选地后跟以逗号分隔的修饰符列表:
[+ | -]国旗(修饰符修饰符,…,修饰符)
下表描述了允许的标志字符。无法识别的标志字符将被忽略。
国旗 |
描述 |
---|---|
|
启用DBUG_的输出 在MySQL中,常用的调试宏关键字是启用的 |
|
在每个调试器输出行之后延迟。参数是延迟,以十分之一秒为单位,取决于机器的能力。例如, |
|
将调试、跟踪和分析限制在命名函数列表中。空列表启用所有函数。适当的 |
|
为每一行调试或跟踪输出标识源文件名。 |
|
用每一行调试或跟踪输出的PID或线程ID标识进程。 |
|
为调试或跟踪输出的每一行标识源文件行号。 |
|
打印调试或跟踪输出的每一行的当前函数嵌套深度。 |
|
为每一行调试输出编号。 |
|
将调试器输出流重定向到指定的文件。默认输出为 |
|
就像 |
|
将调试器操作限制到指定的进程。进程必须用 |
|
打印每一行调试或跟踪输出的当前进程名。 |
|
当推入一个新状态时,不要继承前一个状态的函数嵌套级别。当输出从左侧空白开始时很有用。 |
|
做功能 |
|
启用函数调用/退出跟踪行。可以后跟一个列表(只包含一个修饰符),该列表给出了一个数字的最大跟踪级别,超过这个级别,调试或跟踪宏都不会输出。默认是编译时选项。 |
领先的+
或-
字符和修饰符的末尾列表用于标记字符,如d
或f
它可以为所有适用的修饰符或其中的一部分启用调试操作:
没有领导
+
或-
,则标志值设置为所给出的修饰符列表。与一家领先
+
或-
,列表中的修饰符将被添加到当前修饰符列表中或从当前修饰符列表中删除。
下面的示例展示了这是如何工作的d
国旗。一个空d
列出所有调试宏的启用输出。非空列表只支持对列表中的宏关键字进行输出。
这些语句设置了d
值到修饰符列表,如下所示:
mysql> SET debug = 'd';mysql >选择@@debug;+---------+ | @@ 调试 | +---------+ | d | +---------+ mysql >设置debug = ' d、错误、警告;mysql >选择@@debug;+-----------------+ | @@ 调试 | +-----------------+ | d、错误、警告 | +-----------------+
一个主要+
或-
增加或减少电流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
国旗完全:
SET debug = 'd,error,loop';mysql >选择@@debug;+--------------+ | @@ 调试 | +--------------+ | d、错误、循环 | +--------------+ mysql >设置debug =“- d、错误、循环”;mysql >选择@@debug;+---------+ | @@ 调试 | +---------+ | | +---------+