Docker linux 이미지에 debug 컴파일해서 gdb 쓰다가.. 문득 xcode 놔두고 굳이.. 라는 생각이 들어서......
현재 회사 컴퓨터에 되어있는 셋팅 기준으로 진행하므로, 이미 되어 있는 부분은 생략하면 된다.
자꾸 할 때마다 헷갈려서 정리 함.
1. open SSL 설치
1) 소스 다운로드
https://www.openssl.org/source/
2) build & install
* 참고로 build 하고 전역으로 install 할 예정이라 경로는 아무데나 해도 된다.
$ ./config
※ /usr/bin/ path 로 기본 설치되지만, 원하는 경로가 있다면 --prefix option 을 붙여주면 된다.
$ make
$ make test
$ sudo make install
2. MySQL 빌드
1) MySQL 소스 다운로드
https://github.com/mysql/mysql-server
2) build
$ cd /Users/wooseok.lee/uzi/mysql_debug/8.0.18
$ unzip mysql-server-mysql-8.0.18.zip
$ cd /Users/wooseok.lee/uzi/mysql_debug/8.0.18/mysql-server-mysql-8.0.18
$ mkdir bld && cd bld
$ cmake .. -DWITH_DEBUG=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0
※ boost 가 설치가 되어있지 않아 DDOWNLOAD_BOOST=1 옵션을 넣었지만, 만약 설치가 되어있다면 옵션을 제거 후 path 설정해주면 된다.
$ sudo make
$ sudo make package
3) install
3. Xcode 에 MySQL 프로젝트 추가
1) 초기 설정
$ cd /Users/wooseok.lee/uzi/mysql_debug/8.0.18/mysql-server-mysql-8.0.18
$ mkdir bld_xcode && cd bld_xcode
$ sudo cmake .. -G Xcode -DWITH_BOOST=/usr/local/boost_1_59_0
$ cd ..
$ sudo chmod -R 777 bld_xcode
2) mysql 프로젝트 실행
1) 초기 설정에서 만들어진 "MySQL.xcodeproj" 실행
※ MySQL.xcodeproj path : mysql-server-mysql-8.0.18/bld_xcode/
3) MySQL.xcodeproj 실행이 완료되면 "Automatically create schemes" 클릭
4) build in xcode (command + b)
빌드가 완료되면 Xcode 내에서 MySQL 설정이 완료된다.
4. mysqld 실행
1) mysql intialize
$ cd /Users/wooseok.lee/uzi/mysql_debug/8.0.18
$ mkdir data && mkdir log
$ cd /Users/wooseok.lee/uzi/mysql_debug/8.0.18/mysql-server-mysql-8.0.18/bld/bin
$ /Users/wooseok.lee/uzi/mysql_debug/8.0.18/mysql-server-mysql-8.0.18/bld/bin/mysqld --initialize-insecure --basedir=/Users/wooseok.lee/uzi/mysql_debug/8.0.18/mysql-server-mysql-8.0.18/bld
2) mysqld 실행
$ /Users/wooseok.lee/uzi/mysql_debug/8.0.18/mysql-server-mysql-8.0.18/bld/bin/mysqld &
※ 실제 debug 모드의 stack trace 를 로깅하고 싶다면 아래와 같은 옵션을 추가해주면 된다.
--debug='d:t:i:F:L:o,/Users/wooseok.lee/uzi/mysql_debug/8.0.18/log/debug.err'
mysql server 설정들은 my.cnf 에서 정의해서 사용하면 된다.
5. Xcode 에 mysqld process 붙이기
1) mysqld process id 확인
2) xcode -> Debug->Attach process by pid or name 선택
3) Process id 입력 및 Debug Process As 에 "root" 선택
4) "Attach"
Xcode 에 Attach 까지 완료시키면, Xcode 를 통해서 디버깅을 할 수 있다.