MAC M3 编译安装mysql 5.7.44并进行调试
下载安装包
这里下载带boost的版本:
$ wget https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.44.tar.gz
$ tar xf mysql-boost-5.7.44.tar.gz
$ cd mysql-5.7.44
安装依赖
$ brew install openssl@1.1
$ echo $(brew --prefix) //获取brew下载后存放openssl@1.1的目录,编译会用到
编译安装
$ cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_INNODB_MEMCACHED=ON -DWITH_ZLIB=system -DWITH_SSL=$(brew --prefix)/opt/openssl@1.1 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.44-debug -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EDITLINE=bundled -DFEATURE_SET=community -DCOMPILATION_COMMENT="MySQL Server(GPL)" -DWITH_DEBUG=yes -DWITH_BOOST=../boost/boost_1_59_0/
$ make -j 8
$ sudo make install
$ sudo chown -R $(whoami): /usr/local/mysql-5.7.44-debug
启动
my.cnf 自己提前准备好
$ cd /usr/local/mysql-5.7.44-debug/
$ ./bin/mysqld-debug --defaults-file=my.cnf --initialize-insecure
第一种:
$ ./bin/mysqld-debug --defaults-file=my.cnf &
第二种:
sed -i '' 's|^MYSQLD=|MYSQLD=mysqld-debug|g' bin/mysqld_safe
$ ./bin/mysqld_safe --defaults-file=my.cnf &
调试
由于 mac 不支持gdb调试,所以我们用lldb进行调试
启动后,ps -ef|grep mysql会有pid

我们以mysql_parse为例,直接开始调试:
$ lldb -p 65931
b mysql_parse
另开一个客户端登录数据库:
mysql -uroot -h127.0.0.1
此时该客户端会卡住,我们通过bt调用堆栈,发现卡在我们设置断点的位置。

此时按n可以跟踪代码执行,按c可以跳到下一段代码。

浙公网安备 33010602011771号