掌握 MySQL 内核源码的阅读和调试能力,不仅是数据库研发人员的日常,也是 DBA 进阶的必经之路。
阅读本文你将了解:
- 如何准备 MySQL 调试环境
- GDB 调试入门及操作示例
- Trace 文件调试及操作示例
| 一、准备 Debug 环境
首先用源码编译安装一个用来调试的 MySQL 环境。
开启 -DWITH_DEBUG
,在源码路径创建 build
目录,进入目录并执行:
cmake .. -DWITH_BOOST=../../boost -DWITH_DEBUG=1
然后通过如下方式,确认是否编译成功。
方式一:
$ ./bin/mysqld --verbose --version
回显 debug 版本信息,则编译的是 debug 版本。
ver 8.0.18-debug for Linux on x86_64 (Source distribution)
方式二:
连接数据库,执行查看版本命令。回显包含了 debug 字样,则编译的是 debug 版本。
$ mysql> select version();
+--------------+
| version() |
+--------------+
| 8.0.18-debug |
+--------------+
1 row in set (0.00 sec)
| 二、使用 GDB 调试
GDB 全称 “GNU symbolic debugger”,是 Linux 下常用的程序调试器,通常以 gdb 命令的形式在终端(Shell)中使用。
启动 GDB 编译器
执行如下命令启动 GDB 编译器(假设 my.cnf
在用户根目录中)。进入 GDB 后,敲入 run 即可运行。
gdb --args ./bin/mysqld --defaults-file=~/my.cnf --gdb
其中 --gdb 参数允许你随时 Ctrl+C 的方式中断 mysqld 进程,进行调试命令。
GDB 常用命令
使用多窗口查看源码与调试的读者,可以使用