视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL源码构建和在Gdb中调试的配置过程
2020-11-09 11:52:53 责编:小采
文档


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

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

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

环境:rhel 5 -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()函数中的一个预设断点中。

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

下载本文
显示全文
专题