环境:rhel 5 64-bit 一个快被我用烂了的linux,但是一直没重装过,因为一直保留有快照,万一不行了还原下,呵呵。网上有用bitke
通过源码学习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()函数中的一个预设断点中。
调试完成后,控制台会提示测试结果。