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

来源:互联网 发布:郑玲玲的淘宝店叫什么 编辑:程序博客网 时间:2024/05/16 01:26

      由前面一篇博文中,我们已经知道,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:10761076      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调试基本上就是这些步骤,以后研究源代码时还会进行这样的调试。

原创粉丝点击