最近开始找回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进程。
配置过程中很多细节性的东西,下面是配置过程中得两个错误。
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