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
image

我们以mysql_parse为例,直接开始调试:

$ lldb -p 65931

b mysql_parse

另开一个客户端登录数据库:
mysql -uroot -h127.0.0.1

此时该客户端会卡住,我们通过bt调用堆栈,发现卡在我们设置断点的位置。
image

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

posted @ 2024-11-26 10:48  春风十里不如你i  阅读(337)  评论(0)    收藏  举报