DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(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