Compiling MariaDB for Debugging
Contents
Building MariaDB Starting From 5.5
Compiling MariaDB with full debug information includes all code symbols and also new code to do internal testing of structures and allow one to trace MariaDB execution. A full debug binary will be notable slower than a normal binary (30%).
On Unixes you need to pass -DCMAKE_BUILD_TYPE=Debug
to cmake to compile with debug information.
The other option is to use the scripts in the BUILD directory that will compile MariaDB with most common debug options and plugins:
./BUILD/compile-pentium64-debug-max
There are separate build scripts for different configurations in the BUILD directory.
Example of Building MariaDB With Build Scripts
- Scripts which names contains "debug" are for developers that wants to build, develop and test MariaDB
- Scripts which names contains "valgrind" are for running mysqld under [[|http://valgrind.org|valgrind]]. Compiling for valgrind means that we are using another implementation of MEM_ROOT to allow valgrind to better detect memory overruns. In addition some memory areas are marked as used/not used to remove some false positives.
- Scripts which names contains "max" includes all normal plugins
Here is an example of how to compile MariaDB for debugging in your home directory with MariaDB 5.2.9 as an example:
cd ~ mkdir mariadb cd mariadb tar xvf mariadb-5.2.9.tar.gz ln -s mariadb-5.2.9 current cd current ./BUILD/compile-pentium64-debug-max
The last command will produce a debug version of sql/mysqld
.
If you have a system other than 64 bit Intel/AMD on Linux you can use a
different BUILD/...-debug-max
file. If this fails, you can
try with:
cmake --build . --config Debug make -j4
Building Optimized Build With Debug Symbols
To build MariaDB with symbols, to get better stack traces and to be able to debug the binary with gdb
, you need to supply the -g3
option to the gcc
compiler.
Just compiling with -g3
will make the binary much bigger but the slowdown of the server should be negligible.
One way to do this is to edit the script
BUILD/compile-pentium64-max
and add the -g3 last on the line with extra_flags
, like this:
extra_flags="$pentium64_cflags $fast_cflags -g3"
After that you can compile MariaDB with debugging symbols by just execution the above script.