Mysql源代码级调试方法

废话又说,了解一套系统的最好方式就是看他的源代码了,个人觉得看源代码的最好步骤就是:

  1. 熟悉该系统的使用方法
  2. 熟悉该系统的开发手册
  3. 看别人对系统结构、架构的介绍
  4. 对源代码进行实地的调试跟踪

对于mysql,很多同学对于前三步应该都很熟悉了,那么我们来看看如何对mysql进行源代码级别的调试呢?

  1. 下载mysql的源代码包:http://dev.mysql.com/downloads/ 大家挑选你喜欢的就可以了,我以mysql-5.5为例
  2. 解压缩下载的源代码包,然后就是大家非常熟悉的三部曲:
    1. ./configure
    2. make
    3. make install
  3. 为了能够更好的调试,在configure这个步骤我们需要传递一些参数给它:—prefix=/home/zhangzhong/mysql-dev –with-debug=full
  4. 进入mysql的安装目录:
    1. 根据你自己的需求,定制一个mysql的配置文件my.cnf,建议配置最少的参数:
      1. 配置port和socket就够了
    2. 使用mysql_install_db脚本进行初始化配置工作,命令如下:
      1. ./scripts/mysql_install_db --defaults-file=./my.cnf --basedir=/home/zhangzhong/mysql-dev --datadir=/home/zhangzhong/mysql-dev/var --skip-networking 该脚本可以协助你完成系统表的设置和授权等其他工作
  5. 进行debug调试:
    1. gdb ./bin/mysqld
    2. r  --defaults-file=./my.cnf --datadir=/home/zhangzhong/mysql-dev/var  --skip-networking   --gdb 记住--gdb选项比较重要,如果不加这个选项的话,你在gdb里面就不能使用ctrl-C将mysql进程中断下来了
    3. 好了现在你可以随心所欲的对mysql进行调试了
  6. 举一个实例

create table test.test(name char(10), id int)

select name from test.test where id = 1;

对于上面这个最简单的sql,我想知道mysql是怎么做完一系列操作的,应该怎么做呢?

    1. 定断点:
      1. ctrl-c在gdb里面先让mysql中断下来
      2. 设置断点,break mysql_select
    2. run
    3. 执行sql”select name from test.test where id = 1”

我们可以看到mysql已经乖乖的在你的断点处停下来了,呵呵接着就发挥你对代码的钻研精神和gdb的熟练使用了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值