GNU Info

Info Node: (mysql.info)Compiling for debugging

(mysql.info)Compiling for debugging


Next: Making trace files Prev: Debugging server Up: Debugging server
Enter node , (file) or (file)node

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 or not 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. Running with `SAFEMALLOC' is however 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
have probably 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' now 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, of course, is to
send mail to <mysql@lists.mysql.com> and ask for help.  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.


automatically generated by info2www version 1.2.2.9