您的位置:首页 > 数据库 > MySQL

MySQL源码分析及核心内幕之2 -- 源码调试之gdb

2013-08-28 00:09 489 查看
由前面一篇博文中,我们已经知道,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调试基本上就是这些步骤,以后研究源代码时还会进行这样的调试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: