使用eclipse调试mysql源码

操作系统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

源码编译安装过程见我的另外一篇博客http://mdba.cn/?p=121

不同的地方是编译配置参数有点不同:

1)   CFLAGS=”-g –O0″ CXX=gcc CXXFLAGS=”-g –O0 -felide-constructors -fno-exceptions -fno-rtti”,-g选项中不使用gcc编译优化,即优化级别为-O0。

2)   cmake时使用-DWITH-DEBUG=1。这个可能与上面的的设置有重复的操作。

参考:http://dev.mysql.com/doc/refman/5.5/en/compiling-for-debugging.html

配置编译参数如下:

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,新建文件夹,引入代码。

13)设置编译源目录Build directory,即cmake生成的Makefile所在的目录。

之前已经make过了,如果修改了源代码,可以使用之前生成的Makefile文件进行重新编译。设置如下,

2有人也是用源码目录下面的“BUILD/compile-pentium-debug-max-no-ndb –c”进行生成Makefile文件。但是在5.5开始,都是用cmake。

由于之前通过make编译过了,可以不用重新编译源码,直接进行调试。为了检验上面的目录是否配置正确,可以使用eclipse重新编译mysql源码,编译时间可能有点长。

4)调试mysqld

注意启动mysqld需要指定数据库文件和日志文件的存放目录。可也通过指定默认的配置文件或者直接指定datadir、basedir等参数。

3 4

再啰嗦一句,上面的basedir和datadir参数指定的数据存放目录一定要有mysql用户读写权限,否则根本不能启动mysqld。

配置上面的等参数之后,可以开始调试源代码文件。

找到sql/main.cc文件中的main()函数,就可以设置断点,跟踪代码的执行过程。

原创声明:DBA的罗浮宫–使用eclipse调试mysql源码

此条目发表在mysql分类目录,贴了, 标签。将固定链接加入收藏夹。

使用eclipse调试mysql源码》有 4 条评论

  1. Pingback引用通告: mac下用xcode和eclipse编译调试mysql源码 | DBA的罗浮宫

  2. lei说:

    请教大虾,请问执行“./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”这行语句之后,报错“the child process terminated prematurely. errno= 32”,遇到过吗。

  3. mysql新手说:

    请问大侠
    centos6.4 64位的可以吗
    eclipse+cdt 的版本有没有限制呢

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>