MySQL源码构建和在Gdb中调试的配置过程


通过源码学习C++是我一直以来的习惯,上个月把SGI’s STL源码捣鼓了一下,毕竟是在Win下,配置过程还是很顺利的,这个可以参考侯杰的STL源码,一有空我就深入STL,那个才是基础啊。

但是光有基础是不够的,于是MySQL成了我第三个开源项目的被解剖者,第一个是Myseelite,因为当时要做一个P2P流媒体播放器,是基于那个项目的并且移植到Win下,当然这个是实践性最强的一个项目了。MySQL,STL,Linux这些源码也只能抽空小改改,没有时间完全深入,这个还是很郁闷的,因为白天要上班,项目还是比较紧的那种。

环境:rhel 5 64-bit 一个快被我用烂了的Linux,但是一直没重装过,因为一直保留有快照,万一不行了还原下,呵呵。

网上有用BitKeeper下MySQL源码,估计是类似是CVS SVN的版本控制,下了没用还只能找到2.0版本的,访问了他提供的地址,连源码都找不到,是不是被撤了也不知道,反正网上能下到源码,干吗还用版本控制。

这个网站能下到源码,有4.1.18还有5.0.18的,我下了前者。

前期准备,gcc,autoconf,automake,m4,make等各种工具,我的rhel 5都装好了。

$ tar zxvf mysql-4.1.18.tar.gz

$ cd mysql-4.1.18

$ cp BUILD/compile-pentium-debug BUILD/compile-generic-debug

$ vim BUILD/compile-generic-debug

将文件设置如下:

#! /bin/sh

 

path=`dirname $0`

. "$path/SETUP.sh"

 

extra_flags="-g  $debug_cflags"

c_warnings="$c_warnings $debug_extra_warnings"

cxx_warnings="$cxx_warnings $debug_extra_warnings"

extra_configs=""

 

. "$path/FINISH.sh"

 

$ BUILD/compile- generic-debug   生成make文件

$make test

如下这步可选,如果你要将MySQL安装到系统目录,那么可以执行

$make install

当然还可以用 $./configure 配置选项

接下来就是最重要的调试了

$cd到mysql-test目录下

$cd t

在t目录下你会发现有很多.test文件,文件内容全是sql语句,是预存在MySQL下提供给我们测试的,当然也可以自己新建一个.test文件,里面写上自己要测试的代码。

测试:

$./mysql-test-run –gdb 测试文件名称(注意不带test)

比如测试drop.test文件,那么命令行便是

$./mysql-test-run –gdb drop

运行后会跳出gdb调试窗口,会跳到mysql_parse()函数中的一个预设断点中。

调试完成后,控制台会提示测试结果。

相关内容