mac下用xcode和eclipse编译调试mysql源码

最近开始找回mysq源码了,好久没折腾这些了,准备在mac上用xcode和eclipse搭建好编译调试环境。mac上编译调试环境也主要是安装gcc,g++,cmake和gdb工具,在安装好xcode之后,也就可以编译c/c++程序了。

mac下eclipse+cdt和ubuntu下eclipse+cdt搭建c++编译调试环境基本相同,就gdb的配置一点不一样。xcode相比使用eclipse,其主要的不同是cmake的时候的参数不一样,先使用cmake把mysql源码生成xcode代码工程文件(.xcodeproj)。

关于gdb,就一直比较蛋疼了。osx10.9没有安装gdb工具,我使用brew安装的gdb是7.7版本的,用eclipse测试后的时候无法使用,eclipse一直处于“Launching : Configuring GDB ”状态。后来同事说使用gdb v6.63可以调试,替换之后果然可以,神马情况。

使用xcode调试mysql源码主要几个步骤:

1)使用cmake生成xcode的工程文件

cmake之后将会在源代码根目录生成一个.xcodeproj的xocde工程文件,直接用xcode打开。

cmake . -G "Xcode" -DWITH_DEBUG=1 -DCMAKE_INSTALL_PREFIX=/Users/sylar/Downloads/mysql-5.6.17/work

2)利用xcode进行编译和安装mysqld

就是通过xcode完成make和make install的过程,并生成的目标文件拷贝到上面cmake参数“-DCMAKE_INSTALL_PREFIX”指定的目录中。

3)初始化mysql

这个需要在命令行完成,使用mysql_install_db并指定basedir和datadir。这个参数和xcode设置运行参数要保持一致

./scripts/mysql_install_db     --user=sylar       --basedir=/Users/sylar/Downloads/mysql-5.6.17/work         --datadir=/Users/sylar/Downloads/mysql-5.6.17/work/data

4)设置build和debug时mysqld的运行参数

--user=sylar

--basedir=/Users/sylar/Downloads/mysql-5.6.17/work

--datadir=/Users/sylar/Downloads/mysql-5.6.17/work/data

这一步eclipse的配置几乎相同。

5)xcode执行run和设置断点debug

运行run之后,可以发现mysqld运行成功。

ps aux | grep mysqld也可以发现mysqld进程。

QQ20140510-1@2x

配置过程中很多细节性的东西,下面是配置过程中得两个错误。

1)安装gdb的过程中,发现缺少readline函数库动态链接库。

Libaray not loaded:@@HOMEBREW_PREFI>@@/opt/readline/lib/libreadline ine.6.dylib Reference from:/usr/localbin/gdb

#安装readline,如缺少其他的依赖库,也可以使用同样的方法进行安装。

brew install readline

#如果安装过程中出现提示未链接成功,因为权限不够,需要sudo

sudo brew install readline

#或者手动建立软链接

sudo brew link readline

2)eclipse提示Error with command:gdb –version

eclipse找不到gdb,gdb未安装,或者没有权限访问。

which gdb

3)安装号gdb之后需要使用mac自带的Keychain Access工具生成证书,并用codesign做签名.

sudo codesign -s gdb-cert /usr/bin/gdb

 

原创声明:DBA的罗浮宫mac下用xcode和eclipse编译调试mysql源码

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

mac下用xcode和eclipse编译调试mysql源码》有 2 条评论

  1. mike.wu说:

    你好,文中提到需要安装gdb6.63 。这个是通过brew安装的吗?在网上搜了教程,好像用brew安装装的都是7.7版本啊,请问如何装6.63啊?

发表评论

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.