首页 > 数据库 >MacOS+vscode调试mysql8.0源码

MacOS+vscode调试mysql8.0源码

时间:2024-12-19 11:31:37浏览次数:4  
标签:MacOS cmake vscode ## 源码 build mysql debug boost

环境:

MacOs M1

vscode

前置:安装brew

## 安装brew
/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
## 环境变量
eval "$(/opt/homebrew/bin/brew shellenv)"

下载源码带boost版本

下载之后解压

vscode插件安装

## 直接搜索,然后安装即可
C/C++
C/C++ Clang Command Adapter
CodeLLDB
CMake Tools

在mysql文件夹下创建目录

 ## 都放到cmake-build-debug文件夹下,方便管理
 mkdir cmake-build-debug
 cd cmake-build-debug
 mkdir data
 mkdir etc

进入vscode,在当前工作目录下创建文件夹.vscode,然后创建配置文件settings.json

{
    "cmake.buildBeforeRun": true,
    "cmake.buildDirectory": "/Users/admin/Desktop/mysql-8.0.33/build",
    "cmake.configureSettings": {
        "WITH_DEBUG": "1",
        "CMAKE_INSTALL_PREFIX": "/Users/admin/Desktop/mysql-8.0.33/cmake-build-debug/bin",
        "MYSQL_DATADIR": "/Users/admin/Desktop/mysql-8.0.33/cmake-build-debug/data/mysql_data",
        "SYSCONFDIR": "/Users/admin/Desktop/mysql-8.0.33/cmake-build-debug/my.cnf",
        "MYSQL_TCP_PORT": "3307",
        "WITH_BOOST": "/Users/admin/Desktop/mysql-8.0.33/cmake-build-debug/boost",
        "DOWNLOAD_BOOST": "1",
        "DOWNLOAD_BOOST_TIMEOUT": "6000",
        //"WITH_SSL":"/opt/homebrew/Cellar/openssl@3/3.4.0/bin/openssl"
        // 这个openSSL文件在Mac下使用which openssl给出的那个地址是软连接
        // 需要去看一下具体的地址,然后在这里配置到bin目录的父目录路径
        "WITH_SSL":"/opt/homebrew/Cellar/openssl@3/3.4.0"
    }
}

编译:CMake configure

CMake: build target =》 mysqld executor(build target之后会要求选择目标,选择mysqld executor) 回车运行

到mysql的解压目录下新创建的cmake-build-debug目录下编译mysql

## 进到cmake-build-debug目录下
cd cmake-build-debug

## 编译
cmake .. \
-B./build \
-DWITH_DEBUG=1 \
-DCMAKE_INSTALL_PREFIX=. \
-DMYSQL_DATADIR=./data \
-DSYSCONFDIR=./etc \
-DMYSQL_TCP_PORT=3307 \
-DMYSQL_UNIX_ADDR=mysql-debug.sock \
-DWITH_BOOST=../boost \
-DDOWNLOAD_BOOST=0 \
-DDOWNLOAD_BOOST_TIMEOUT=60000 \
-DWITH_SSL=/opt/homebrew/Cellar/openssl@3/3.4.0


## 编译mysqld
## --build build表示构建build目录,此处与-B./build 一致
 cmake --build build --target mysqld -j 3
## 编译mysql
cmake --build build --target mysql -j 3
## 这两个文件mysqld和mysql都会在build/bin目录下

初始化mysql

build/bin/msyqld --defaults-file=etc/my.cnf --initialize-insecure

配置launch.json文件,在.vscode目录下,具体的mysql和mysqld的路径要在cmake-build-debug目录下找一下

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug mysqld",
            "program": "${workspaceFolder}/cmake-build-debug/build/bin/mysqld",
            "args": [
                "--defaults-file=${workspaceFolder}/cmake-build-debug/etc/my.cnf"
            ],
            "cwd": "${workspaceFolder}"
        },
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug mysql",
            "program": "${workspaceFolder}/cmake-build-debug/build/bin/mysql",
            "args": [
                "-uroot",
                "-P3307",
                "-h127.0.0.1"
            ],
            "cwd": "${workspaceFolder}"
        }
    ]
}

在vscode debug mysqld

在终端使用mysql连接mysql server

build/bin/mysql -h 127.0.0.1 -P 3307 -uroot

调试

点击暂停,然后就可以逐步调试,然后执行SQL语句,就可以开始调试mysql了

增加断点,输入直接输入函数名,查找具体函数也可以在这里查找

Error

  • boost包下载超时
## boost包下载超时的报错
## https://archives.boost.io/release/1.77.0/source/boost_1_77_0.tar.bz2
## 这个网站下载的更快
##https://sourceforge.net/projects/boost/
## 下载到工作目录的boost文件夹下,然后改配置文件

# 解决1:
# 修改参数
DOWNLOAD_BOOST_TIMEOUT="60000"

# 解决2:
## 下载带有boost包的mysql,然后配置:
## 配置boost的路径
"WITH_BOOST": "/Users/admin/Desktop/mysql-8.0.33/cmake-build-debug/boost",
## 是否下载boost,不下载
"DOWNLOAD_BOOST": "0",

# 解决3:
## 自己下载boost,然后改同解决2的配置。
  • 找不到openssl
## 这个openSSL文件在Mac下使用which openssl给出的那个地址是软连接
## 需要去看一下具体的地址,然后在这里配置到bin目录的父目录路径
## MacOS到2024年10月14日不支持openssl@1.1了,所以这里使用brew 安装openssl 3
"WITH_SSL":"/opt/homebrew/Cellar/openssl@3/3.4.0"

标签:MacOS,cmake,vscode,##,源码,build,mysql,debug,boost
From: https://www.cnblogs.com/tyhA-nobody/p/18616806

相关文章