MySQL/MySQL Debug Setting

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

wooseok2 2020. 1. 13. 19:45

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