狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

VSCode編譯和調(diào)試MySQL源碼詳細(xì)教程

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

1 前言

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

2 環(huán)境準(zhǔn)備

以下為本次實(shí)驗(yàn)的關(guān)鍵環(huán)境配置:

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

3 詳細(xì)步驟

3.1 服務(wù)器基礎(chǔ)環(huán)境配置

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 服務(wù)器安裝GCC

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

# 配置阿里yum源,追加以下內(nèi)容
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 # 創(chuàng)建軟鏈接
cmake -version 
cmake3 version 3.17.5 # 返回信息代表CMake版本安裝成功

3.4 服務(wù)器下載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參數(shù)(/etc/my.cnf

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

3.5 客戶端VSCode配置

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

  • Remote - SSH (v0.66.1):遠(yuǎn)程連接服務(wù)器
  • 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)

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

3.6 編譯前項(xiàng)目設(shè)置

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

3.7 編譯前參數(shù)設(shè)置

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

-DWITH_BOOST=./boost

-DDOWNLOAD_BOOST=1

-DWITH_JEMALLOC=1

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

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

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

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

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

3.8 初始化數(shù)據(jù)庫

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

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

3.9 開始調(diào)試

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

使用源碼進(jìn)行調(diào)試的時(shí)候,mysqld服務(wù)會將核心的日志輸出。

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

4 其他

本文從環(huán)境配置到調(diào)試實(shí)戰(zhàn),完整演示了MySQL源碼的遠(yuǎn)程調(diào)試方法。通過源碼級調(diào)試,開發(fā)者可以深入理解InnoDB事務(wù)、SQL解析等核心機(jī)制,在學(xué)習(xí)調(diào)試的過程中逐步構(gòu)建完整的數(shù)據(jù)庫知識體系。本次環(huán)境搭建只是萬里長城的第一步,后續(xù)可嘗試在事務(wù)、查詢優(yōu)化等復(fù)雜場景中設(shè)置斷點(diǎn),觀察內(nèi)部狀態(tài)變化,進(jìn)一步提升問題排查能力。

?轉(zhuǎn)自https://juejin.cn/post/7476651892144947211


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