精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL 調試環境搭建:VSCode + Docker

數據庫 MySQL
本文介紹了 VSCode + Docker + CentOS 7.9 搭建 MySQL 調試環境的完整流程。

近期使用 gdb 調試比較多,發現了很多好用的功能,而在 Mac 上使用 gdb 調試,體驗不太順暢。

為此,基于 Docker 搭建了一套 CentOS 環境,結合 VSCode 和 gdb 來調試 MySQL,拿出來和大家分享。

本文基于 Mac + MySQL 8.0.32,對于在其它系統上搭建 MySQL 調試環境,安裝好 Docker Desktop 之后的步驟也是可以借鑒的。

1、下載 Docker Desktop

下載地址:https://www.docker.com/products/docker-desktop

下載界面:

圖片

Docker Desktop 下載完成之后,安裝并運行,然后就可以繼續接下來的步驟了。

2、創建 Docker 容器

先在 Docker Desktop 中設置能夠映射到容器中的宿主機目錄:

圖片

在第 3 個紅框處的輸入框?中,輸入 /opt/data/docker?,然后按回車鍵?把目錄加入 FILE SHARING?,表示允許把宿主機中該目錄及其子目錄映射到容器中,最后點擊第 4 個紅框處的 Apply & Restart?,應用并重啟 Docker Desktop,讓修改生效。

在宿主機執行以下命令,創建容器并運行:

# 獲取 CentOS 7.9 鏡像
docker pull centos:centos7.9.2009

# 創建容器
# 這個 CentOS 容器專用于調試 MySQL
# 所以命名為【mysql】
# -d,表示以守護進程方式運行容器
# -t,表示需要打開終端
# --name,容器名字
# -p,端口映射,格式【宿主機端口:容器端口】
# -v,目錄映射,格式【宿主機目錄:容器目錄】
# centos:centos7.9.2009,鏡像
docker run \
--name mysql \
-p 3306-3310:3306-3310 \
-v /opt/data/docker/centos79_mysql:/opt/data \
--privileged -dt \
centos:centos7.9.2009

在 Mac 宿主機上,連接容器中的 MySQL,需要指定 -p 選項做端口映射,然后通過 宿主機 IP + 映射的宿主機端口連接容器中的 MySQL。

3、安裝 VSCode 擴展

VSCode 擴展包含兩部分:安裝在宿主機的擴展、安裝在容器中的擴展。

我們先打開 VSCode,安裝宿主機 Docker 擴展:

圖片

安裝 Docker 擴展之后,我們就能在 VSCode? 中看到之前創建的 mysql 容器了:

圖片

點擊 Attach Visual Studio Code 會打開一個新的 VSCode 窗口,我們給它取個名字:mysql 容器窗口,后面會用到。

接下來,在 mysql 容器窗口安裝擴展。

安裝 C/C++ 擴展:

圖片

圖片

安裝 CMake Tools 擴展:

圖片

圖片

4、準備編譯

在宿主機執行以下命令,進入 mysql 容器:

docker exec -ti mysql /bin/bash

在 mysql 容器中執行以下命令,下載源碼、安裝依賴軟件:

# 創建存放源碼的根目錄
mkdir -p /opt/data/code

# 進入存放源碼的根目錄
cd /opt/data/code

# 安裝 wget、下載源碼 & 解壓
yum install wget
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.32.tar.gz
tar zxvf mysql-boost-8.0.32.tar.gz

# 修改源碼目錄名
mv mysql-8.0.32 8.0.32

# 用于安裝 cmake3 的 yum 源
yum -y install epel-release

# 用于安裝高版本 gcc、gcc-c++、make 的 yum 源
yum -y install centos-release-scl

# 安裝依賴軟件
yum install devtoolset-11-gcc \
devtoolset-11-gcc-c++ \
devtoolset-11-make \
cmake3 \
openssl-devel \
ncurses-devel \
bison

# 安裝 gdb
yum install devtoolset-11-gdb

# 讓 scl 環境臨時生效
source /opt/rh/devtoolset-11/enable

# 讓 scl 環境永久生效
yum install vim
vim /etc/profile.d/scl.sh

# 把以下內容寫入 scl.sh,然后保存退出
source /opt/rh/devtoolset-11/enable

5、編譯

編譯過程按以下步驟進行:

第 1 步,在 mysql 容器窗口中打開剛下載的 MySQL 源碼目錄:

圖片

第 2 步,創建 .vscode 目錄:

圖片

第 3 步,新建 CMake 配置文件 settings.json:

圖片

settings.json 文件內容如下:

{
"cmake.buildBeforeRun": true,
"cmake.buildDirectory": "${workspaceFolder}/output",
"cmake.configureSettings": {
"WITH_DEBUG": "1",
"CMAKE_INSTALL_PREFIX": "${workspaceFolder}/output",
"MYSQL_DATADIR": "/opt/data/8.0.32/data",
"SYSCONFDIR": "/opt/data/8.0.32/etc",
"MYSQL_TCP_PORT": "3306",
"MYSQL_UNIX_ADDR": "/opt/data/8.0.32/data/mysql-debug.sock",
"WITH_BOOST": "${workspaceFolder}/boost",
"DOWNLOAD_BOOST": "0"
},
"files.associations": {
"*.ipp": "cpp"
},
"cmake.parallelJobs": 8,
"cmake.cmakePath": "cmake3"
}

cmake.parallelJobs 用于控制多少個線程同時進行編譯,以加快編譯速度,默認值為 0,CMake 會根據 CPU 核數自行確定并發線程數。

如果編譯過程中報以下錯誤,有兩種解決方案:

c++: internal compiler error: Killed (program cc1plus)

方案 1:把 cmake.parallelJobs 設置的小一點,我在編譯過程中把并發數設置為 10 會報錯,后來改為 8 就能成功編譯了。

方案 2:?在 Docker Desktop 中調整容器能夠使用的資源,如下:

圖片

想要編譯的更快,可以把 cmake.parallelJobs 設置為 0,然后,在以上 Docker Desktop 界面中,把 CPU、Memory 兩項調大。

第 4 步,CMake 配置?,生成 Makefile 文件:在 ?mysql 容器窗口?頂部的輸入框中,輸入 > CMake: 配置?,然后選擇下面列出來的 CMake 配置,開始生成 Makefile 文件。

圖片

選擇編譯器:

圖片

如果 CMake:配置執行過程中出現了錯誤,解決錯誤之后需要刪除 CMakeCache.txt,然后重新執行 CMake:配置步驟。

CMakeCache.txt 文件路徑為 /opt/data/code/8.0.32/output/CMakeCache.txt。

第 5 步,編譯服務端可執行程序 mysqld:

在輸入框中輸入“> CMake: 生成目標”,選中第 2 個紅框中的選項。

圖片

接著會出現另一個輸入框,在其中輸入 mysqld,然后回車,就開始編譯 mysqld 了。

圖片

第 6 步,編譯客戶端可執行程序 mysql:
在輸入框中輸入“> CMake: 生成目標”,選中第 2 個紅框中的選項。

圖片

接著會出現另一個輸入框,在其中輸入 mysql,然后回車,就開始編譯 mysql 了。

圖片

6、初始化

接下來,依然是在 mysql 容器中執行以下命令:

# 創建配置文件目錄 & 數據目錄
mkdir -p /opt/data/8.0.32/{etc,data}

# 創建用戶 &
groupadd mysql
useradd -g mysql mysql

# 創建配置文件
vim /opt/data/8.0.32/etc/my.cnf

# 把以下內容下入 my.cnf
[mysqld]
user=mysql
innodb_file_per_table=1
server_id=100
log_bin=ON
lc-messages-dir=/opt/data/code/8.0.32/output/share
log-error=/opt/data/8.0.32/error.log

# 初始化數據目錄
/opt/data/code/8.0.32/output/bin/mysqld --initialize-insecure

7、調試

經過前面一系列操作之后,就可以開始著手在 mysql 容器窗口中調試了。

第 1 步,新建配置文件 launch.json:

圖片

launch.json 文件內容如下:

{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 啟動",
"type": "cppdbg",
"request": "launch",
"program": "/opt/data/code/8.0.32/output/bin/mysqld",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "為 gdb 啟用整齊打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "將反匯編風格設置為 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}

第 2 步,啟動調試,launch.json 文件配置完成之后,運行和調試下拉框就能看到剛剛添加的配置,點擊 (gdb) 啟動前面的小三角,啟動 MySQL,然后就可以開始調試了。

圖片

第 3 步,在 mysql 容器的命令行中,通過前面編譯的客戶端可執行程序 mysql,連接 MySQL:

cd /opt/data/code/8.0.32/output/bin
./mysql -h127.0.0.1 -uroot

第 4 步,連接 MySQL 成功之后,在 MySQL 源碼中打個斷點,先打開 sql/sql_parse.cc 文件:

圖片

然后在 mysql_execute_command() 函數入口處打上斷點:

圖片

第 5 步,執行一條 SQL:

SELECT host, user FROM mysql.user;

程序在斷點處暫停之后,就可以查看一系列運行時信息了,查看斷點所在函數的局部變量:

圖片

查看斷點處的調用棧:

圖片

也可以在調試控制臺中,用命令行執行更多 gdb 命令:

圖片

VSCode + Docker 調試,需要在命令之前加上 -exec,上圖中命令 p thd->m_query_string 前面就加上了 -exec。

8、總結

本文介紹了 VSCode + Docker + CentOS 7.9 搭建 MySQL 調試環境的完整流程。

本文轉載自微信公眾號「一樹一溪」,可以通過以下二維碼關注。轉載本文請聯系一樹一溪公眾號。

責任編輯:姜華 來源: 一樹一溪
相關推薦

2023-09-13 07:30:36

ADManager漏洞調試

2009-12-18 11:14:52

VS 2010環境

2025-05-26 08:05:00

Nacos源碼開發

2023-07-31 07:15:09

漏洞調試環境

2016-03-02 09:50:09

docker測試環境

2011-07-19 16:34:01

Xcode 證書

2016-11-03 09:49:04

2017-02-06 11:55:40

DockerJava Web環境

2016-09-08 16:04:59

JavaDocker前端

2022-12-05 08:41:39

Redis調試環境源碼

2023-08-08 08:34:47

漏洞環境獲取方法

2022-06-24 10:11:15

DockerLinux

2015-01-05 14:16:16

DockerFig自動化容器編排

2015-12-30 13:58:00

DockerGit開發環境

2022-03-18 13:58:00

RocketMQ消息隊列

2009-03-10 18:36:56

LinuxLAMP環境搭建

2013-10-28 01:44:56

mysql載均衡高可用環境

2013-10-30 22:41:23

Clouda環境

2011-03-14 13:06:58

LAMP搭建

2011-03-09 13:02:31

LAMP環境搭建
點贊
收藏

51CTO技術棧公眾號

91精品91久久久中77777| 免费成人av在线播放| 欧美成人女星排名| 中文字幕色呦呦| www视频在线| 尤物网精品视频| 亚洲美女视频网| 欧美大尺度做爰床戏| 免费人成在线观看播放视频| 九九国产精品视频| 欧美丰满少妇xxxx| 久久6免费视频| 另类视频在线| 粉嫩一区二区三区性色av| 91成人性视频| 九九九视频在线观看| 综合久久伊人| 欧美日韩国产一区二区三区| 三区精品视频观看| 国产精品国产一区二区三区四区| 亚洲视频中文| 亚洲天堂av电影| 日本中文字幕在线不卡| 一个人www视频在线免费观看| 国产欧美一区二区在线| 91精品中国老女人| 在线天堂中文字幕| 一个色综合网| 国产午夜精品久久久| 久久久久久久久久一区| 美女露胸视频在线观看| 中文字幕一区二区三区在线播放 | 日韩一区二区三| 久操网在线观看| 最新97超碰在线| 成人在线视频首页| 成人午夜在线视频一区| 狠狠躁夜夜躁人人爽天天高潮| 久久影院一区| 337p亚洲精品色噜噜| 麻豆tv在线播放| 免费**毛片在线| 99r国产精品| 亚洲一区二区三区在线视频 | 91久久久在线| 日本丰满少妇做爰爽爽| 亚洲电影成人| 久久天天躁日日躁| 性欧美13一14内谢| av成人app永久免费| 欧美人xxxx| 中文字幕永久视频| 福利在线免费视频| 亚洲欧美另类久久久精品| 日本一区二区不卡高清更新| 日本久久一级片| 极品尤物av久久免费看| 国产精品高潮呻吟久久av无限| 国产精品23p| 国产高清一区二区| 在线日韩欧美视频| 久久av无码精品人妻系列试探| 久久国产精品免费精品3p| 日韩一级片在线观看| 久久久久久久高清| 色综合久久久| 欧美日韩成人激情| 国产高清视频网站| 国产综合色激情| 在线观看亚洲精品视频| 北条麻妃在线视频观看| freexxx性亚洲精品| 亚洲午夜av在线| 中文字幕人妻熟女人妻洋洋| 91国内在线| 一区2区3区在线看| 激情五月婷婷六月| 91桃色在线| 精品动漫一区二区三区| 人人妻人人添人人爽欧美一区| 国产一区久久精品| 亚洲天堂网中文字| 糖心vlog在线免费观看| 国产精品一卡二卡三卡| 亚洲女人****多毛耸耸8| 少妇高潮流白浆| 欧美人与性动交α欧美精品图片| 亚洲狠狠丁香婷婷综合久久久| 亚洲免费视频播放| 日韩av毛片| 亚洲成在线观看| 中文字幕无码精品亚洲35| www.成人影院| 欧美色综合久久| 日韩视频在线观看一区二区三区| 欧美一区在线观看视频| 亚洲电影免费观看高清完整版在线 | 国产视频精品视频| 亚洲精品国产setv| 最新国产成人av网站网址麻豆| 少妇高潮在线观看| 亚洲网址在线| 国产成人小视频在线观看| 亚洲无码久久久久久久| 国内爆初菊对白视频| 亚洲va欧美va人人爽成人影院| 精品美女一区二区三区| 熟女丰满老熟女熟妇| 禁果av一区二区三区| 日韩在线视频观看| 日本一区二区三区四区五区| 天堂影院一区二区| 99电影网电视剧在线观看| 日韩偷拍自拍| 亚洲嫩草精品久久| 无码无遮挡又大又爽又黄的视频| 亚洲综合伊人| 日韩av影视在线| 久久免费手机视频| 狠狠噜噜久久| 国产精品吴梦梦| 日韩在线一区二区三区四区| 欧美激情一区在线| 伊人网在线免费| 松下纱荣子在线观看| 欧美欧美欧美欧美首页| yjizz视频| 婷婷综合社区| 欧美一级大片在线观看| 国产精品伊人久久| 国产欧美日韩激情| 国产日韩欧美精品在线观看| 亚洲黄色免费av| 精品久久久久久综合日本欧美| 性欧美13一14内谢| 激情综合视频| 亚洲一区二区三区777| 韩国中文免费在线视频| 一区二区三区高清| 欧洲av无码放荡人妇网站| 日韩区一区二| 日韩资源在线观看| 久久久久久久久久影院| 国产一区二区三区在线观看免费| 日本一区二区三区视频在线播放 | 神马久久午夜| 日韩欧美色综合网站| 中国黄色a级片| 好看的日韩av电影| 91在线高清免费观看| 九一国产在线| 国产精品v亚洲精品v日韩精品 | 久久精品日产第一区二区三区乱码 | 99www免费人成精品| yiren22亚洲综合伊人22| 婷婷六月综合亚洲| 中文字幕一区二区三区人妻在线视频 | 亚洲国产欧美一区二区三区同亚洲| 国产在视频线精品视频| 日韩va欧美va亚洲va久久| 国产成人免费观看| 七七久久电影网| 欧美电影免费观看完整版| 91高清免费看| 精一区二区三区| 最新国产精品久久| 国产亚洲欧美日韩精品一区二区三区| 亚洲人永久免费| www.av麻豆| 白白色 亚洲乱淫| 丁香六月激情婷婷| 免费观看性欧美大片无片| 久久精品国产亚洲精品| 国产精品视频一区二区三区,| 中文字幕av不卡| 97av视频在线观看| 精品免费在线| 91精品国产亚洲| 色视频在线看| 色婷婷综合久久久中文字幕| 波多野结衣一本| 国产精品久久国产愉拍| 精品午夜一区二区| 日韩毛片免费观看| 在线看片第一页欧美| 一区二区小视频| 亚洲激情av在线| 国产xxxx视频| 在线观看不卡| 蜜桃传媒视频麻豆一区 | 日韩欧美不卡| 国产精品入口尤物| 日本黄色片在线观看| 日韩一区二区视频在线观看| 亚洲国产成人精品综合99| 怡春院在线视频| 久久99精品久久久久婷婷| 中文字幕欧美日韩一区二区| 精品视频一区二区三区| 18性欧美xxxⅹ性满足| 国产二区视频在线观看| 在线电影一区二区三区| 国产在线视频在线观看| av资源网一区| 色播五月综合网| 国产精品二区影院| 日本在线观看一区二区三区| 亚洲国产精选| 91精品国产91久久久久久| 激情在线视频| 欧美一区二区三区在线看| 久久久精品国产sm调教| 久久麻豆一区二区| 伊人国产精品视频| 国产欧美日韩亚洲一区二区三区| 日韩欧美精品一区二区| 伊人www22综合色| 久久久在线免费观看| 北岛玲一区二区三区| 日韩欧美色综合网站| 欧美成人一区二区三区四区| 一区二区三区中文免费| 制服丝袜在线第一页| 久久精品国产免费看久久精品| 97免费视频观看| 国内精品久久久久久久久电影网| 91在线无精精品一区二区| 悠悠资源网亚洲青| 久久99精品久久久久久青青91| 九一国产在线| 日韩精品综合一本久道在线视频| 国产一级片免费在线观看| 亚洲国产精品尤物yw在线观看| 老司机精品免费视频| 久久女同互慰一区二区三区| 精品人妻一区二区三区日产| 国产乱码字幕精品高清av | 欧美最新精品| 97在线免费观看| а√在线中文在线新版| 欧美日韩国产成人| 天天色天天射天天综合网| 久久亚洲精品一区二区| 亚洲成人三级| 视频直播国产精品| 日本在线免费| 精品国产拍在线观看| 成年人在线看| 日韩在线免费视频| 久久97人妻无码一区二区三区| 久久亚州av| 成人a免费视频| 国产精品xnxxcom| 91在线免费看片| 第四色中文综合网| 国产高清精品一区二区| www.亚洲一二| 久久亚洲精品欧美| 国产欧美高清视频在线| 亚洲电影免费| 国产精品99久久精品| 91视频成人免费| 欧美久久成人| 热99这里只有精品| 久久久久久黄| 日本中文字幕观看| 国产成人精品免费视频网站| 精品国产一区在线| 久久久久久久久久美女| 手机av在线不卡| 亚洲六月丁香色婷婷综合久久| 久青草视频在线观看| 午夜电影一区二区三区| 国产一区免费看| 欧美高清一级片在线| 日韩在线观看视频一区| 亚洲一区二区黄| 国产盗摄在线观看| 97精品国产97久久久久久春色| 肉色欧美久久久久久久免费看| 国产成人精品视频| www.欧美视频| 黄色99视频| 日韩欧美综合| 福利视频一区二区三区四区| 久久精品一本| 欧美性受xxxx黒人xyx性爽| 波多野结衣中文字幕一区| 精品国产av无码| 亚洲美女一区二区三区| 制服.丝袜.亚洲.中文.综合懂色| 欧美三级电影网| 亚洲男人天堂久久| 永久免费精品影视网站| 麻豆福利在线观看| 国产精品美乳一区二区免费| jazzjazz国产精品麻豆| 亚洲高清视频一区二区| 影音先锋久久久| 亚洲精品手机在线观看| 成人黄色国产精品网站大全在线免费观看| 成人精品999| 亚洲国产中文字幕| 亚洲熟妇av乱码在线观看| 亚洲大胆人体av| 黄视频网站在线| 国产精品第七影院| 精品精品精品| 丰满女人性猛交| 日韩福利视频导航| 日本美女视频网站| 亚洲欧美影音先锋| 日本高清不卡码| 精品欧美久久久| 免费av网站在线观看| 国产成人在线亚洲欧美| 国产ts在线播放| 国产午夜精品久久久久久久| 欧美日韩中文视频| 欧美一区二区女人| av网在线观看| 日韩美女写真福利在线观看| 中文字幕亚洲在线观看| 一区二区三区三区在线| 美女久久网站| 国产 中文 字幕 日韩 在线| 亚洲狠狠丁香婷婷综合久久久| 中文字幕免费播放| 国产一区二区三区在线看| 久久青草伊人| 国产一区二区在线观看免费播放| 1024精品久久久久久久久| 亚洲欧美自拍另类日韩| 国产女人水真多18毛片18精品视频| 久久一区二区三区视频| 亚洲成av人乱码色午夜| 在线观看中文| 97人人澡人人爽| 国产精品99免费看| 亚洲最大视频网| 一区二区三区在线视频播放 | 亚洲欧美se| 国产伦精品一区二区| 亚洲天堂久久| 午夜免费福利影院| 亚洲成人福利片| 欧美自拍偷拍一区二区| 97视频在线观看免费| 999久久久久久久久6666| 国产91在线亚洲| 国产99精品国产| 日本网站在线免费观看| 亚洲精品www久久久| 日韩欧美精品一区二区三区| 精品国产_亚洲人成在线| 国产精品主播| 这里只有久久精品| 精品视频一区二区三区免费| 欧美jizz18性欧美| 亚洲www视频| 激情成人综合| 国产国语性生话播放| 日韩欧美成人网| 91在线导航| 7777精品久久久大香线蕉小说| 国模吧视频一区| 久久精品综合视频| 在线免费观看日本欧美| 日本在线视频观看| 国产精品99久久久久久久| 亚洲精品乱码久久久久久蜜桃麻豆| 999精品免费视频| 日本精品视频一区二区| 日本蜜桃在线观看| 不卡视频一区二区| 久久av一区| 任我爽在线视频| 日韩精品一区国产麻豆| 性爽视频在线| 在线国产伦理一区| 成人h版在线观看| 亚洲精品国产精品乱码视色| 久久综合九色九九| 欧美巨大xxxx| 中文av一区二区三区| 亚洲一区二区免费视频| 免费黄色片在线观看| 成人免费观看网址| 国产日韩欧美一区| 亚洲国产精品女人| 美日韩黄色大片| 香蕉视频禁止18| 亚洲一区二区在线观看视频| 欧美色视频免费| 成人免费视频在线观看超级碰| 亚洲小说欧美另类社区| 国产三级在线观看完整版| 精品黑人一区二区三区久久 | 中文字幕日本在线观看| 99久久精品免费看国产一区二区三区|