美文网首页
如何在 Mac下用 Clion 调试 MySQL 源码

如何在 Mac下用 Clion 调试 MySQL 源码

作者: 牧码人zhouz | 来源:发表于2021-03-27 10:18 被阅读0次

    系统环境

    macOS: 10.13.6
    MySQL: 5.7.32

    下载并安装Clion

    Clion是一款强大的C/C++ IDE 工具,与IntelliJ IDEA、PyCharm一样,都是JetBrains公司的产品,Clion下载地址:https://www.jetbrains.com/clion/

    下载MySQL

    我们使用的MySQL版本为5.7.32,下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.32.tar.gz

    导入MySQL源码

    点击open选择源码路径并导入源码

    导入之后Clion会自动进行编译,有可能会报错,先不去管它。

    配置Clion

    • 1、配置CMake,如下图所示


    CMake配置如下:

    -DWITH_DEBUG=1
    -DWITH_BOOST=/path/to/mysql-5.7.32/boost
    

    \color{red}{Tips}
    1、由于我们下载的MySQL源文件中包含了boost文件,所以此处的-DWITH_BOOST指向我们解压后的源文件目录下的boost目录就可以了;
    2、build directory是编译后文件的保存路径,保持默认就可以,编译时会自动帮我们在源文件目录下创建该目录。

    • 2、运行CMake
      点击 File -> Reload CMake Project


    运行时有报错,ssl版本太低,最低版本要求1.1.1


    用如下方法升级ssl

    brew install openssl@1.1
    cd /usr/local/opt
    unlink openssl
    ln -s ../Cellar/openssl@1.1/1.1.1c openssl
    

    \color{red}{Tips}:我装的openssl版本是1.1.1c,有小伙伴装的其它版本的,需要把软连接改一下哈。

    升级前后对比一下


    升级前 升级后

    测试一下

    $ openssl version
    OpenSSL 1.1.1c  28 May 2019
    

    升级完成后,没遇到其它问题,运行成功。

    • 编译mysqld
      创建数据目录
    mkdir -p /path/to/mysql-5.7.32/buidout/data
    

    创建配置文件my.cnf

    cd /path/to/mysql-5.7.32/
    vim my.cnf
    
    [mysqld]  
    log-error=log.err
    datadir=/path/to/mysql-5.7.32/buidout/data
    pid-file=user.pid
    skip-grant-tables
    innodb_file_per_table=1
    port=3306
    
    [client]
    # 客户端来源数据的默认字符集
    default-character-set = utf8mb4
    [mysqld]
    # 服务端默认字符集
    character-set-server=utf8mb4
    # 连接层默认字符集
    collation-server=utf8mb4_unicode_ci
    [mysql]
    # 数据库默认字符集
    default-character-set = utf8mb4
    

    点击右上角的 Edit Configurations...

    找到mysqld,并配置Program arguments

    --defaults-file=/path/to/mysql-5.7.32/my.cnf
    
    12.png

    保存配置后,点击debug按钮(下图箭头所指),进行编译和初始化mysql数据目录


    编译时报错如下

    /Users/zhengzhou/Documents/cpp_workspace/mysql-5.7.32/storage/innobase/os/os0event.cc:382:24: error: use of undeclared identifier 'CLOCK_MONOTONIC'
                if (clock_gettime(CLOCK_MONOTONIC, &tp) == -1) {
                                  ^
    

    经google,是缺少/usr/include目录导致的,在命令行输入以下命令安装/usr/include目录

    xcode-select --install
    

    运行完成后,发现/usr/include目录已经存在了,继续编译,成功了,且msyqld已经启动了。

    • 连接mysql
      在命令行输入mysql -uroot -h127.0.0.1,回车后发现进入了mysql shell,连接成功。
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    +--------------------+
    1 row in set (0.01 sec)
    

    相关文章

      网友评论

          本文标题:如何在 Mac下用 Clion 调试 MySQL 源码

          本文链接:https://www.haomeiwen.com/subject/bywthltx.html