Home >Database >Mysql Tutorial >mac下用xcode和eclipse编译调试mysql源码_MySQL

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

WBOY
WBOYOriginal
2016-06-01 13:14:431544browse

最近开始找回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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:MySQL分页实现_MySQLNext article:MySQL dumps_MySQL