mac下用xcode和eclipse编译调试mysql源码_MySQL
Jun 01, 2016 pm 01:14 PM最近开始找回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

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Android TV Box, 비공식 Ubuntu 24.04 업그레이드 제공

PHP를 사용하여 MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까?

데이터베이스에서 Java 열거 유형의 애플리케이션 시나리오는 무엇입니까?

MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법
