操作系统Ubuntu10.04
编译调试工具:gcc、g++、make、cmake、autoconf、gdb、eclipse、eclipse cdt等。
1、 编译调试工具安装
gcc、g++、make、cmake等工具可以通过apt-get安装,也可以通过ubuntu包管理器进行安装。
由于使用GUI工具比较方便调试和阅读代码,使用eclipse+cdt进行调。
Eclipse和CDT的配置比较简单,下载CDT安装包,在eclipse中菜单栏中选择Help->Install New Software->Add->Archive,加载刚下载的CDT包,重启启动eclipse即可。(注意eclipse和cdt版本最好严格一致,保证不出出错)。
2、 源码编译安装mysql
不同的地方是编译配置参数有点不同:
1) CFLAGS=”-g –O0″ CXX=gcc CXXFLAGS=”-g –O0 -felide-constructors -fno-exceptions -fno-rtti”,-g选项中不使用gcc编译优化,即优化级别为-O0。
2) cmake时使用-DWITH-DEBUG=1。这个可能与上面的的设置有重复的操作。
配置编译参数如下:
CFLAGS="-g –O0"
CXX=gcc CXXFLAGS="-g –O0 -felide-constructors -fno-exceptions -fno-rtti"
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=1
make
make install
编译安装之后,需要调用安装目录(/usr/local/mysql)下面的scripts/mysql_install_db初始化数据库,否则在调试mysqld过程中出现很多错误。同时mysql_install_db也可以指定mysql的my.cnf、basedir和datadir等参数。如下,
./mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --datadir=/home/sylar/Downloads/mysql-5.6.15/win/data --basedir=/home/sylar/Downloads/mysql-5.6.15/win
basedir和datadir参数需要注意它们的权限,否则mysqld信息中显示permission denied。这些编译和初始化过程和你平时用源码安装mysql的过程基本一致,除了上面提到的两点。
3、 eclipse编译与调试配置
1)在eclipse中建立一个c++ empty project。
2)选中上面建立的project,新建文件夹,引入代码。
3)设置编译源目录Build directory,即cmake生成的Makefile所在的目录。
之前已经make过了,如果修改了源代码,可以使用之前生成的Makefile文件进行重新编译。设置如下,
有人也是用源码目录下面的“BUILD/compile-pentium-debug-max-no-ndb –c”进行生成Makefile文件。但是在5.5开始,都是用cmake。
由于之前通过make编译过了,可以不用重新编译源码,直接进行调试。为了检验上面的目录是否配置正确,可以使用eclipse重新编译mysql源码,编译时间可能有点长。
4)调试mysqld
注意启动mysqld需要指定数据库文件和日志文件的存放目录。可也通过指定默认的配置文件或者直接指定datadir、basedir等参数。
再啰嗦一句,上面的basedir和datadir参数指定的数据存放目录一定要有mysql用户读写权限,否则根本不能启动mysqld。
配置上面的等参数之后,可以开始调试源代码文件。
找到sql/main.cc文件中的main()函数,就可以设置断点,跟踪代码的执行过程。