(mysql.info) compiling-for-debugging
Info Catalog
(mysql.info) debugging-server
(mysql.info) debugging-server
(mysql.info) making-trace-files
E.1.1 Compiling MySQL for Debugging
-----------------------------------
If you have some very specific problem, you can always try to debug
MySQL. To do this you must configure MySQL with the -with-debug or the
-with-debug=full option. You can check whether MySQL was compiled with
debugging by doing: `mysqld --help'. If the -debug flag is listed with
the options then you have debugging enabled. `mysqladmin ver' also
lists the `mysqld' version as `mysql ... --debug' in this case.
If you are using `gcc' or `egcs', the recommended `configure' line is:
CC=gcc CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
--with-debug --with-extra-charsets=complex
This avoids problems with the `libstdc++' library and with C++
exceptions (many compilers have problems with C++ exceptions in
threaded code) and compile a MySQL version with support for all
character sets.
If you suspect a memory overrun error, you can configure MySQL with
-with-debug=full, which installs a memory allocation (`SAFEMALLOC')
checker. However, running with `SAFEMALLOC' is quite slow, so if you
get performance problems you should start `mysqld' with the
-skip-safemalloc option. This disables the memory overrun checks for
each call to `malloc()' and `free()'.
If `mysqld' stops crashing when you compile it with -with-debug, you
probably have found a compiler bug or a timing bug within MySQL. In
this case, you can try to add -g to the `CFLAGS' and `CXXFLAGS'
variables above and not use -with-debug. If `mysqld' dies, you can at
least attach to it with `gdb' or use `gdb' on the core file to find out
what happened.
When you configure MySQL for debugging you automatically enable a lot
of extra safety check functions that monitor the health of `mysqld'. If
they find something `unexpected,' an entry is written to `stderr',
which `mysqld_safe' directs to the error log! This also means that if
you are having some unexpected problems with MySQL and are using a
source distribution, the first thing you should do is to configure
MySQL for debugging! (The second thing is to send mail to a MySQL
mailing list and ask for help. See mailing-lists. If you
believe that you have found a bug, please use the instructions at
bug-reports.
In the Windows MySQL distribution, `mysqld.exe' is by default compiled
with support for trace files.
Info Catalog
(mysql.info) debugging-server
(mysql.info) debugging-server
(mysql.info) making-trace-files
automatically generated byinfo2html