Copyright (C) 2000-2012 |
GNU Info (mysql.info)Compiling for debuggingCompiling 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 |