MySQL 소스코드를 봐야 할 때가 있는데, 변수명이 친절하게 써져 있는 편은 아니라 디버깅 과정이 필요하다.
맥에서 기본으로 제공하는 Xcode를 이용하여 디버깅 환경을 구축하면 편하게 쓸 수 있다.
우석님께서 잘 정리해 두셔서 그대로 차용하면서 중간중간 에러가 나는 부분 주석을 달아두었다.
설치환경
- macOS Monterey 12.1
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
※ clone받은 Mysql 디렉토리에서 진행
$ mkdir bld && cd bld
※ cmake가 설치되지 않았다면 먼저 설치한 후 진행한다.
$ brew install cmake
$ cmake .. -DWITH_DEBUG=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_73_0
※ boost 가 설치가 되어있지 않아 DDOWNLOAD_BOOST=1 옵션을 넣었지만, 만약 설치가 되어있다면 옵션을 제거 후 path 설정해주면 된다.
※ boost 버전은 설치하는 시기에 맞게 알아서 수정한다.
$ sudo make
$ sudo make package
3) install
3. Xcode 설치 & Xcode에 MySQL 프로젝트 추가
0) Xcode 설치
App Store에서 다운받은 후 최초 한 번 실행한 뒤 진행한다. (설치만 하고 실행하지 않으면 이후 단계에서 No CMAKE_C_COMPILER 에러 발생)
1) 초기 설정
$ cd /Desktop/mysql-server-8.0
$ 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 를 통해서 디버깅을 할 수 있다.
출처: https://wooseok-uzi.tistory.com/6
Mac OS 에서 MySQL 8.0 Xcode Debug 환경 만들기
Docker linux 이미지에 debug 컴파일해서 gdb 쓰다가.. 문득 xcode 놔두고 굳이.. 라는 생각이 들어서...... 현재 회사 컴퓨터에 되어있는 셋팅 기준으로 진행하므로, 이미 되어 있는 부분은 생략하면 된다
wooseok-uzi.tistory.com
'MySQL' 카테고리의 다른 글
Aurora MySQL 3 Online DDL 버그 (0) | 2023.09.19 |
---|---|
[GTID] 복제 환경 GTID 틀어졌을 때 해결하기 (0) | 2022.06.14 |
Character set & Collation (0) | 2021.09.09 |
InnoDB flush method (0) | 2021.03.28 |
[Collation] UTF8 charset & collation 비교 (0) | 2021.02.26 |