mysql 源碼調試方法

來源:互聯網
上載者:User

標籤:

 http://blog.itpub.net/29254281/viewspace-1847415/
其中呂海波老師分享的內容是 《調試Oracle二三例:調試技術在日常營運中的應用》
其中有關於調試MySQL源碼的內容.

實驗如下:
下載MySQL 5.7的源碼
http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.9.tar.gz

編譯,注意增加 DEBUG 選項。(cmake的版本要求在2.8.2以上)
cmake \
-DCMAKE_INSTALL_PREFIX=/home/mysql5.7/mysql-5.7.9/ \
-DMYSQL_DATADIR=/home/mysql5.7/mysql-5.7.9/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/home/mysql5.7/mysql-5.7.9/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=1  \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/tmp -DDOWNLOAD_BOOST_TIMEOUT=60000

make && make install
 scripts/mysql_install_db --basedir=/home/mysql5.7/mysql-5.7.9/ --datadir=/home/mysql5.7/mysql-5.7.9/data --user=mysql5.7
 源碼安裝完MySQL之後,使用Debug模式啟動
mysqld  --debug --console &

然後重頭戲來了

先找到MySQL的PID
[[email protected]~]$ps -ef | grep mysqld
mysql5.7 26086     1  2 19:29 pts/3    00:00:01 mysqld --debug --console
mysql5.7 26170 26118  0 19:30 pts/3    00:00:00 grep mysqld

這時候,tail -f /tmp/mysqld.trace 
可以看到,任何在MySQL的操作,調用的函數資訊都記錄在這個trace檔案中.

找到其中任意一行,比如 PROFILING::status_change

使用命令gdb調試.
gdb --pid 26086 --tui

將上述函數打斷點.
break PROFILING::status_change

開啟另外一個MySQL終端.執行查詢,然後進入gdb的斷點.

可以看到源碼,並且逐步執行,列印變數.

 



看靜態代碼一般比較枯燥,用這種方式感覺比較好入門.

同樣的方式,也適用於Redis

mysql 源碼調試方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.