午夜视频在线观看区二区-午夜视频在线观看视频-午夜视频在线观看视频在线观看-午夜视频在线观看完整高清在线-午夜视频在线观看网站-午夜视频在线观看亚洲天堂

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

VSCode編譯和調試MySQL源碼詳細教程

freeflydom
2025年3月6日 9:50 本文熱度 388

1 前言

在運維MySQL的過程中,我們常會遇到無法用現有知識解釋的問題。閱讀源碼不僅能幫助我們理解數據庫底層邏輯,還能將零散的知識串聯成體系。本文以VSCode遠程調試MySQL 5.7源碼為例,分享完整的環境搭建流程。若文中存在疏漏,歡迎指正交流。

2 環境準備

以下為本次實驗的關鍵環境配置:

名稱詳情
數據庫服務器安裝MySQL源碼,服務器系統版本信息Centos7(內核: 3.10.0-1160.el7.x86_64)
客戶端安裝VSCode軟件,window10
服務器GCC版本10.2.1
服務器CMake版本3.17.5
客戶端VSCode版本1.96.2
服務器上MySQL源碼mysql-boost-5.7.44

3 詳細步驟

3.1 服務器基礎環境配置

yum -y install net-tools wget vim jemalloc-devel jemalloc libudev-devel ncurses-devel openldap openldap-devel cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi bison

3.2 服務器安裝GCC

注意:CentOS 7默認GCC版本為4.8,需升級至10.x以支持C++17特性。

# 配置阿里yum源,追加以下內容
vi /etc/yum.repos.d/CentOS-Base.repo
[sclo-rh]
name=CentOS-$releasever - SCLo RH
baseurl=http://mirrors.aliyun.com/centos/$releasever/sclo/$basearch/rh/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS7

# 更新源
yum install epel-release
yum install centos-release-scl
yum install -y centos-release-scl
yum clean all
yum makecache
scl enable devtoolset-10 bash

# 安裝配置GCC
mv /usr/bin/gcc mv /usr/bin/gcc.bak
mv /usr/bin/g++ mv /usr/bin/g++.bak
update-alternatives --install /usr/bin/gcc gcc /opt/rh/devtoolset-10/root/usr/bin/gcc 60
update-alternatives --install /usr/bin/g++ g++ /opt/rh/devtoolset-10/root/usr/bin/g++ 60
update-alternatives --config gcc
update-alternatives --config g++

# 查看版本
gcc --version # 版本為10.2.1
g++ --version # 版本為10.2.1

3.3 安裝CMake 3.17

說明:MySQL 5.7需CMake 3.5+,此處選擇較新的3.17版本。

cd /etc/pki/rpm-gpg
wget https://archive.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
yum install cmake3
ln -s /usr/bin/cmake3 /usr/bin/cmake # 創建軟鏈接
cmake -version 
cmake3 version 3.17.5 # 返回信息代表CMake版本安裝成功

3.4 服務器下載MySQL5.7軟件包

下載與解壓:

cd /home
wget -c 'https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.44.tar.gz'
tar -zxvf mysql-boost-5.7.44.tar.gz

配置MySQL參數(/etc/my.cnf

# 配置默認的my.cnf文件,主要是設置常用參數,方便后續使用VSCode調試源碼,啟動mysqld服務的時候盡量不報錯
vi /etc/my.cnf
[mysqld]
lc-messages-dir=/home/mysql-5.7.44/build/sql/share # 根據實際情況修改
socket=/tmp/mysql.sock
skip-grant-tables # 方便調試
character_set_server=utf8
lower_case_table_names=1
[client]
socket=/tmp/mysql.sock

3.5 客戶端VSCode配置

VSCode是一款跨平臺源代碼編輯器,我們編譯調試MySQL5.7源碼使用該IDE工具。首先打開VSCode,找到拓展,安裝Remote SSH。安裝成功后,使用該拓展連接遠程LINUX服務器,快捷鍵Ctrl + Shift + p,首先我們需要安裝以下插件:

  • Remote - SSH (v0.66.1):遠程連接服務器
  • C/C++ (v1.7.1)
  • CMake (v0.0.17)
  • CMake Tools (v1.9.2)
  • Code Spell Checker (v2.0.13)
  • Doxygen Documentation Generator (v1.3.2)

連接遠程Linux服務器:快捷鍵Ctrl + Shift + p(Windows)、Shift + Command + p(Mac),按照提示連接服務器后,點擊“open folder”,選擇自己的MySQL源碼目錄。 

3.6 編譯前項目設置

  1. CMake選擇 [Debug],對應上圖中紅色標注1
  2. GCC編譯器選擇我們之前安裝的 [GCC10.2.1],對應上圖中紅色標注2
  3. 選擇需要編譯的程序,選擇 [all] ,意為編譯MySQL工程下的所有程序,對應上圖中紅色標注3
  4. 選擇我們要調試的程序為 [mysqld],表示要運行MySQL Server程序,當遇到調試程序無法選擇的情況,通過快捷鍵Ctrl + Shift + p,然后輸入: CMake: Set Launch/Debug Target 進行修改,對應上圖中紅色標注4 

3.7 編譯前參數設置

在VSCode中依次添加: File → Preferences → Settings → 'cmake:Configure' → 【Cmake:Configure Args】 → Add Item

-DWITH_BOOST=./boost

-DDOWNLOAD_BOOST=1

-DWITH_JEMALLOC=1

(最好將下圖Remote、Workspace頁簽全部都配置,防止出現問題

在VSCode依次添加: File → Preferences → Settings → 'cmake:Cache'→【Cmake:Cache Init】→ Edit in settings.json

"cmake.debugConfig": {"args:": ["--user=root"],}

(最好將下圖Remote、Workspace頁簽全部都配置,防止出現問題

編譯前準備工作就緒,點擊最下面**【? Build】**就可以開始編譯了,如果最后輸出“[build] Build finishded with exit code 0”則代表編譯成功。 

3.8 初始化數據庫

編譯好源碼,只是代表我們生成必要的服務,需要通過mysqld服務初始化數據庫目錄。

在數據庫目錄
/home/mysql-5.7.44/build/sql/mysqld --initialize --user=root # 初始化數據目錄
/home/mysql-5.7.44/build/sql/mysqld --user=root # 測試服務是否可以正常啟動,如果測試不成功,可以通過error日志進行分析,排查問題

3.9 開始調試

設置斷點(鼠標左鍵在行號前單擊一下即可),按最下面的小蟲子圖標就可以調試程序了。  

使用源碼進行調試的時候,mysqld服務會將核心的日志輸出。

使用mysql命令進入服務,執行下面的命令
set debug = 'd:t:o,/tmp/mysqld.trace';
select @@debug; 
然后手動查看/tmp/mysqld.trace即可

4 其他

本文從環境配置到調試實戰,完整演示了MySQL源碼的遠程調試方法。通過源碼級調試,開發者可以深入理解InnoDB事務、SQL解析等核心機制,在學習調試的過程中逐步構建完整的數據庫知識體系。本次環境搭建只是萬里長城的第一步,后續可嘗試在事務、查詢優化等復雜場景中設置斷點,觀察內部狀態變化,進一步提升問題排查能力。

?轉自https://juejin.cn/post/7476651892144947211


該文章在 2025/3/6 9:50:02 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产亚洲精品久久无亚洲 | 99精品一区二区三区无码吞精 | 国产成人中文字幕在线 | 国产欧美精品专区一区二区 | 国产成人精品本亚洲 | 国产综合成人亚洲 | 国产精品一区二区久久乐下载 | 99久久久久国产 | a级毛片毛片看的的久 | 18禁裸体动漫美女无遮挡网 | 国产在线精品第一区二区 | 成人精品一区二区三 | 国产精品亚洲欧美一区二区 | 国产在线视频不卡一区二区 | 国内自产视频在线观看 | 国产成人免费观看 | 国产av果冻传媒在线观看 | 国产高清在线观看自拍 | 国产成人a∨激情视频厨房 国产成人a∨麻豆精品 | 国产区在线观看视频 | 二区三区中文字幕 | 精品无人区一线二线三线区别 | 国产在线高清视频无码不卡互動交流 | 国产原创麻豆顾美玲在线观看 | 精品国产亚洲av尤物久 | 精品亚洲aⅴ无码专区毛 | 国产精品成人一区二区三区 | 国产成人av一区二区三区不卡 | 国产极品jk白丝喷白浆图片 | 国产精品欧美精品国产主播 | 国产无码一区二区三区动态 | 精品人妻少妇一区二区 | 国产成人综合亚洲欧美在线 | 国产原创在线 | 爆乳熟妇一区二区三区 | 91麻豆国产福利精品 | 国产爆乳无码一区二区麻豆 | 国产精品嫩草99av在线 | 白丝爆浆18禁一区二区三区 | 国产熟睡乱子伦视频频 | 国产成a人亚洲精v品在线观看 |