Using xcode and eclipse to compile and debug mysql source code on mac has recently started to retrieve the mysq source code. I haven't tried this for a long time. I am going to build a compiling and debugging environment on mac using xcode and eclipse. The compiling and debugging environment on mac is mainly to install gcc, g ++, cmake and gdb tools. after xcode is installed, you can compile the c/c ++ program.
Eclipse + cdt for mac and eclipse + cdt for ubuntu build the c ++ compilation and debugging environment basically the same, so the configuration of gdb is slightly different. The main difference between xcode and eclipse is that the parameters in cmake are different. use cmake to generate the xcode code project file (. xcodeproj) from the mysql source code ).
Gdb has always been a pain point. Osx10.9 does not have the gdb tool installed. I use brew to install gdb version 7.7 and cannot use it after testing with eclipse. eclipse is always in the "Launching: refreshing GDB" status. Later, my colleague said that gdb v6.63 can be used for debugging. after replacement, it can be used.
Use xcode to debug mysql source code:
1) use cmake to generate xcode project files
After cmake, A. xcodeproj xocde project file is generated in the source code root directory, which can be opened directly using xcode.
cmake . -G "Xcode" -DWITH_DEBUG=1 -DCMAKE_INSTALL_PREFIX=/Users/sylar/Downloads/mysql-5.6.17/work |
2) use xcode to compile and install mysqld
The make and make install processes are completed using xcode, and the generated target file is copied to the directory specified by the "-DCMAKE_INSTALL_PREFIX" cmake parameter.
3) initialize mysql
You need to use mysql_install_db in the command line and specify basedir and datadir. This parameter must be consistent with the running parameter set in 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) set the running parameters of mysqld during build and debug.
--user=sylar --basedir=/Users/sylar/Downloads/mysql-5.6.17/work --datadir=/Users/sylar/Downloads/mysql-5.6.17/work/data |
In this step, the eclipse configuration is almost the same.
5) run xcode and set the breakpoint debug
After running run, you can find that mysqld runs successfully.
Ps aux | grep mysqld can also detect the mysqld process.
There are many details in the configuration process. below are two errors in the configuration process.
1) when gdb is installed, it is found that the dynamic link library of the readline function library is missing.
Libaray not loaded: @ HOMEBREW_PREFI> @/opt/readline/lib/libreadline ine.6.dylib Reference from:/usr/localbin/gdb
# Install readline. if other dependent libraries are missing, you can install readline in the same way. Brew install readline # if the system prompts that the link is not successful during the installation process, because the permission is insufficient, sudo brew install readline # or manually create a soft link sudo brew link readline |
2) the Error with command: gdb-version is prompted in eclipse.
Eclipse cannot find gdb, gdb is not installed, or it has no access permission.
Which gdb
3) after the installation code gdb, use the Keychain Access tool provided by mac to generate a certificate and use codesign for signature.
Sudo codesign-s gdb-cert/usr/bin/gdb