对于没有C语言基础的同学来说,想看看源码,在搞定编辑器做debug的时候就被劝退了,发生点啥了,完全看不懂,不知道从哪里入手去做debug;我为了看看 mysql 的 insert buffer 到底存的是索引页还是数据页,花了几天时间搞明白,怎么用 clion 做debug调试。不懂的可以跟着一起动手搞起来。
macOS 12.4
c/c++ 编译器是 clang 13.0.0
Clion的版本是 2023.3.5
mysql 的源码版本 5.7.36
按照下图配置CMake
,CMake
这里的作用是根据 CMakeLists.txt
来生成标准的构建文件Makefile
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/Users/yuanjy/work_fz/boost -DCMAKE_BUILD_TYPE=Debug
源码是 mysql-server-mysql-5.7.36 版本,去 github 上下载。
这里要把源码中的 VERSION 改成 VERSION_1;编译的时候有些文件引用 #include ,会引用这里,导致报错;
然后再修改 cmake/mysql_version.cmake 文件,修改引用的 VERSION 文件名;
如果已经存在 cmake-build-debug (自动构建生成的),把它删了,再重新构建一下
构建完成之后,在 1 这个位置应该出来了很多CMake Application;展开 2 这个位置,找到 mysqld;点击 debug 的按钮,他就会自动编译了,编译完成会启动mysqld,mysqld 编译后产生的位置在 cmake-build-debug/sql 下面
这个时候应该会启动失败,没有对应的 data 目录,看看打印的报错日志,看看指定的 data 目录在哪,创建建一个这个目录,再执行 mysqld --initialize
,最后一行有初始密码;用这个密码就可以登录 mysql 了
然后找到你要看的位置打个断点,就可以开始调试代码了
希望你能成功启动debug