Mac 下在 xcode 中 debug MySQL 8.0

本文介绍了如何在Mac环境下,利用Xcode进行MySQL 8.0的调试。通过homebrew安装cmake,从GitHub克隆MySQL源代码,设置编译选项后生成Xcode项目。在Xcode中完成编译并安装,配置my.cnf文件,初始化MySQL服务器,并学会设置断点进行debug。

专业 MySQL 内核开发选手一般会选用 linux gdb 直接调试,对于我们只是想了解 MySQL 怎么工作的同学来说,更加现实的玩法是找一个体验好点的平台和 IDE 进行学习。MySQL 8.0 的 debug 方式和之前版本大同小异,应该来说更加方便,这边记录下。

  1. cmake 安装好,使用 homebrew 即可

  2. https://github.com/mysql/mysql-server clone MySQL 源代码

  3. clone 完毕之后,在 mysql-server 根目录建一个目录 bld

  4. 进入 bld 执行以下命令,… 表示源代码位置,-G “Xcode” 表示生成 xcode 文件, -DWITH_DEBUG=1 这个选项千万不能忘,否则 debug 找不到行号直接让你看汇编,-DCMAKE_INSTALL_PREFIX 表示编译路径,后面指令是下载 boost

    cmake .. -G "Xcode" -DWITH_DEBUG=1 -DCMAKE_INSTALL_PREFIX=绝对路径/mysql-server/bld/install -      DDOWNLOAD_BOOST=1 -DWITH_BOOST=绝对路径/mysql-server/bld/install/boost
    
  5. 编译完成后,你就可以看到 MySQL.xcodeproj 文件,xcode 选择这个文件打开,自动生成 schema

  6. 选择 ALL_BUILD 并按三角键执行 install , 执行完毕之后会在 bld/runtime_output_directory/Debug 目录生成熟悉的应用程序。

  7. 创建一个 my.cnf 放在应用程序目录下(bld/runtime_output_directory/Debug),内容可以简单些,如下

    [mysqld]
    datadir=绝对路径/mysql-server/bld/runtime_output_directory/data
    socket=绝对路径/mysql-server/bld/runtime_output_directory/mysql.sock
    port=33061
    
  8. 在命令行,或者在 xcode 中 schema 选择 mysqld, edit schema, 添加如下参数,此处 – initialize 务必放后面,否则失败

    --defaults-file=绝对路径/mysql-server/bld/runtime_output_directory/Debug/my.cnf
    --initialize
    
  9. 初次初始化因为我们是选择默认系统初始化 root 用户的密码,所以务必记住日志打印出来的密码,重新启动前去掉 --initialize 参数,使用 root 登陆后会强制让你重设密码。如果这个密码忘了,参见我另外一篇文章《MySQL 8.0 root密码忘了怎么办》

  10. 接下来就可以愉快的 debug 了,如果需要 debug 启动初始化过程,可以断点打在 mysqld.cc 文件的 mysqld_main 函数中,如果需要 debug SQL 指令,可以断点打在 sql_parse.cc文件的 do_command 函数中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值