10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 本手册下载 从本手册中摘录

5.9.4 DBUG包

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.traceo,\ 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

值中的每个字段由强制标志字符组成,可选地之前+或者-字符,以及可选择后跟逗号分隔的修饰符列表:

[+ | -]国旗(修饰符修饰符,…,修饰符)

下表介绍了允许的标志字符。无法识别的标志字符忽略了。

旗帜

描述

d

启用DBUG_输出XXX当前状态的宏。可能后跟一个关键字列表,它仅启用仅具有该关键字的DBUG宏的输出。空列表的关键字允许所有宏的输出。

在mysql中,常见的调试宏关键字要启用进入退出错误警告信息, 和环形

D

在每个调试器输出行之后的延迟。争论的焦点是延迟,在十分之一秒内,取决于机器的能力。例如,D, 20指定延迟两秒钟。

f

将调试,跟踪和配置文件限制为命名函数列表。空列表启用所有功能。适当的d或者t仍然必须分发旗帜;这个标志只在它们被启用时限制它们的操作。

F

为每一行调试或跟踪输出标识源文件名。

为每行调试或跟踪输出的PID或线程ID标识该过程。

l

为每一行调试或跟踪输出标识源文件行号。

n

打印每行调试或跟踪输出的当前功能嵌套深度。

N

编号每行调试输出。

o

将调试器输出流重定向到指定的文件。默认输出是斯德尔

O

喜欢o,但文件在每个写入之间真正刷新。需要时,文件在每个写入之间关闭并重新开放。

p

将调试器操作限制到指定的进程。过程必须用dbug_process.宏并匹配一个在列表中进行调试器操作。

P

打印每行调试或跟踪输出的当前进程名称。

r

push新状态时,不要继承前一个状态的函数嵌套级别。当输出从左边开始时很有用。

年代

做功能_sanity(_file _,_ line_)在每个调试的函数,直到_sanity()返回与0不同的东西。

t

启用函数调用/退出跟踪行。后面可能跟着一个列表(只包含一个修饰符),给出最大跟踪级别的数值,超过这个级别,调试或跟踪宏都不会出现输出。默认值是编译时选项。

领先的+或者-修饰符的字符和尾随列表用于标记字符,如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;+---------+ | @@ 调试  | +---------+ | | +---------+