问
咱们在第 16 问中应用过 mysql 内置的调试版本 mysqld-debug,但有些 MySQL 版本中没有内置的调试版本.
这次介绍一下如何编译一个调试版本
试验
咱们先筹备一个装置了 docker 的环境, 之所以用容器, 是因为咱们在进行各种试验后, 能够将容器毁掉重建, 放弃零碎环境洁净对立, 十分便当.
首先开启一个 devtoolset 容器:
确认本人在容器内:
下载 MySQL 源码包并解压:
接下来装置依赖包, 一共分为 3 类依赖: 编译用的工具, MySQL 的依赖包, 以及开启 DTRACE 调试性能用的依赖包
(DTRACE 调试性能 咱们当前会介绍)
创立一个 build 目录, 之后 MySQL 会将编译的过程文件和后果都放在这个文件夹里:
对编译进行配置:
在一大段输入后, 能够看到配置胜利的信息:
当初能够正式编译了:
通过漫长的五彩斑斓的输入, 编译顺利胜利:
在 build/sql 文件夹中, 曾经造成了调试版的 mysqld :
小贴士
如何像官网一样编译正式的 MySQL ?
在配置环节, cmake 命令中, 将 -DWITH_DEBUG=1 换成 -DBUILD_CONFIG=mysql_release 即可
咱们为什么须要调试版本的 MySQL 呢?
在第 35 问中, 咱们应用过 gdb 调试器, 用于限度 MySQL 的行为, 来钻研相干机制.
MySQL 在编译时, 会进行一些优化, 会将一些调试信息抹掉以进步性能. 这些被抹掉的调试信息 是 咱们应用调试器时所须要的.
咱们本人编译了调试版本的 MySQL, 就有了这些信息的加持, 咱们就能应用更多的调试伎俩.
当然, 保留了调试信息, 就意味着运行性能会降落, 所以 MySQL 的调试版本不能用来做性能测试.
对于 MySQL 的技术内容,你们还有什么想晓得的吗?连忙留言通知小编吧!