如何在 Mac 下用 Clion 調試 MySQL 源碼

前面寫了幾篇文章來經過調試 MySQL 源碼來分析死鎖問題,有讀者問如何用 IDE 調試源碼,這篇文章簡單介紹一下如何在 Mac 下調試。mysql

之因此使用調試的方式來分析死鎖問題是由於在解決 MySQL 死鎖的過程當中比較糾結,就算找到了緣由,也比較難說服本身原理就是書上或者網上博客裏些的那樣,因此就開始研究 MySQL 的源碼,花了一些時間搭建了在 Clion 中調試源碼的環境。整個過程其實很是簡單也很順利。sql

下載 Clion

Clion 是宇宙第二強的 IDE 公司 jetbrains 旗下的一款 C/C++ IDE 工具,咱們作 Java 用的 IntelliJ IDEA、Python 用的 PyCharm、Go 用的 Goland 都是出自這家,很好很強大。 從下面的地址下載安裝:www.jetbrains.com/clion/shell

編譯安裝 MySQL

這裏選擇的是 5.5 版本的源碼,源碼體積和編譯速度比 5.7 的快太多,對於咱們理解 MySQL 的原理沒有太大的區別,因此這裏選擇了 5.5數據庫

# 1. 下載解壓源碼
wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.62.tar.gz 
tar -xzvf mysql-5.5.62.tar.gz
 # 2. 生成目錄
// 生成編譯後安裝目錄及數據目錄
mkdir -p build_out/data
 # 3.編譯
cmake . -DWITH_DEBUG=1 \
-DCMAKE_INSTALL_PREFIX=build_out \
-DMYSQL_DATADIR=build_out/data
make && make install
 # 4. 初始化 mysql 數據庫
cd build_out
scripts/mysql_install_db
複製代碼

Clion 配置

1.配置 Cmake,內容以下圖 bash

2.配置mysqld的啓動參數,指定讀取的配置文件路徑 --defaults-file=/path/to/my.cnf 一個可參考的 my.conf 配置以下

[mysqld]  
log-error=log.err
datadir=data
pid-file=user.pid
skip-grant-tables
innodb_file_per_table=1
port=33060
transaction_isolation = READ-COMMITTED

[client]
# 客戶端來源數據的默認字符集
default-character-set = utf8mb4
[mysqld]
# 服務端默認字符集
character-set-server=utf8mb4
# 鏈接層默認字符集
collation-server=utf8mb4_unicode_ci
[mysql]
# 數據庫默認字符集
default-character-set = utf8mb4
複製代碼

點擊 debug 按鈕進行調試 微信

ps:注意 mysqld 所在的列表不是按字母序來排序的,拼命往下拉就能夠找到了。函數

不出意外這個時候,MySQL 就啓動起來了,監聽了咱們上面設置的 33060 端口,用 MySQL 的客戶端就能夠正常鏈接上去了(帳號 root,密碼空)工具

Cion 能夠很是方便的斷點單步調試和查看變量的值,好比咱們在sql_parse.ccdo_command函數打一個斷點,隨便執行一個 sql 語句就能夠看到單步調試到了這裏ui

到此 MySQL 源碼編譯調試的過程基本就講完了,後面會有更多用調試來解決一些具體問題的案例,盡請期待。若是有什麼問題能夠留言或者加微信溝通。
相關文章
相關標籤/搜索