由前面一篇博文中,我們已經知道,MySQL源碼目錄下的BUILD目錄是各種平臺使用的編譯腳本,我們要用的是debug版本,以方便我們使用gdb來調試MySQL,所以使用的腳本是BUILD/compile-pentium-debug來配置MySQL的編譯,首先,進入mysql源碼根目錄,執行以下命令:
>BUILD/compile-pentium-debug --prefix=$HOME/mysql-bin
安裝目錄爲$HOME/mysql-bin,然後,執行安裝:
>make && make install
第三步是生成mysql系統庫:
>cd $HOME/mysql-bin
>cd scripts
>./mysql_install_db --defaults-file=/etc/my.cnf --basedir=$HOME/mysql-bin --datadir=$HOME/mysql-bin/data
第四步是gdb運行mysqld:
>gdb --args ~/mysql-bin/bin/mysqld --defaults-file=/etc/my.cnf --basedir=~/mysql-bin --datadir=~/mysql-bin/data
(gdb) br handle_one_connection #設置斷點
c #繼續運行
第五步是在另一個shell中運行客戶端程序mysql連接mysqld服務端:
>cd $HOME/mysql-bin
>cd bin
>./mysql
第六步是查看gdb輸出:
Breakpoint 1, handle_one_connection (arg=0x86ede38) at sql_connect.cc:1076
1076 THD *thd= (THD*) arg;
(gdb) bt
#0 handle_one_connection (arg=0x86ede38) at sql_connect.cc:1076
#1 0x4fc133a8 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#2 0x4fb647fe in clone () from /lib/tls/i686/cmov/libc.so.6
使用gdb調試基本上就是這些步驟,以後研究源代碼時還會進行這樣的調試。