>데이터 베이스 >MySQL 튜토리얼 >mac下用xcode和eclipse编译调试mysql源码_MySQL

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

WBOY
WBOY원래의
2016-06-01 13:14:431543검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:MySQL分页实现_MySQL다음 기사:MySQL dumps_MySQL