본문 바로가기

MySQL/MySQL Debug Setting

Mac OS 에서 MySQL 8.0 Xcode Debug 환경 만들기

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 를 통해서 디버깅을 할 수 있다.