(mysql.info.gz) Compiling for debugging
Info Catalog
(mysql.info.gz) Debugging server
(mysql.info.gz) Debugging server
(mysql.info.gz) 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 will avoid 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 will install 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 will disable 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 will be written to
`stderr', which `safe_mysqld' 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. Mailing-list. Please use
the `mysqlbug' script for all bug reports or questions regarding the
MySQL version you are using!
In the Windows MySQL distribution, `mysqld.exe' is by default compiled
with support for trace files.
Info Catalog
(mysql.info.gz) Debugging server
(mysql.info.gz) Debugging server
(mysql.info.gz) Making trace files
automatically generated byinfo2html