Приложение E. Перенос на другие системы |
Пред. |
|
След. |
E.1. Отладка сервера MySQL
E.1.1. Компиляция MySQL для отладки
Иногда в случае каких-либо очень специфических проблем помогает отладка MySQL. Для этого необходимо сконфигурировать сборку MySQL с параметрами --with-debug или --with-debug=full . Чтобы проверить, был ли код MySQL скомпилирован с возможностью отладки, нужно запустить команду: mysqld --help . Если среди опций присутствует флаг --debug , то отладка доступна. Кроме того, если задана возможность отладки, команда mysqladmin ver выводит версию mysqld как mysql ... --debug .
При использовании компиляторов gcc или egcs рекомендуется следующая конфигурационная строка:
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
Такая запись позволит избежать проблем с библиотекой libstdc++ и исключениями C++ (многие компиляторы имеют проблемы с исключениями C++ в кодах потоков) и скомпилировать версию MySQL с поддержкой всех кодировок.
Если есть подозрение, что может возникнуть ошибка переполнения памяти, то можно сконфигурировать MySQL с параметром --with-debug=full , чтобы установить программу контроля выделения памяти (SAFEMALLOC ). Однако SAFEMALLOC замедляет работу системы, поэтому при возникновении проблем с производительностью необходимо запустить mysqld с опцией --skip-safemalloc . Эта опция заблокирует проверки переполнения памяти для каждого вызова malloc и free .
Если mysqld перестает падать в аварийном режиме при компиляции ее с параметром --with-debug , то, возможно, вы нашли ошибку в компиляторе или произошла ошибка синхронизации внутри MySQL. В этом случае можно попытаться добавить к переменным CFLAGS и CXXFLAGS в приведенной выше конфигурационной строке -g и не использовать параметр --with-debug . Если mysqld и после этого будет падать, то можно по меньшей мере подключить к ней отладчик gdb или использовать gdb для core-файла, чтобы выяснить, что происходит.
Если MySQL сконфигурирован для отладки, то автоматически становятся доступными множество дополнительных функций контроля надежности, которые отслеживают состояние mysqld . Если они обнаруживают что-либо "неожиданное", то информация об этом будет записана в поток вывода stderr , который safe_mysqld направит в журнал ошибок! Таким образом, если возникают какие-либо неожиданные проблемы с MySQL и при этом доступен исходный код дистрибутива, то первое, что необходимо сделать, - сконфигурировать MySQL для отладки! (А второе необходимое действие - это, конечно, послать письмо на <mysql@lists.mysql.com> и попросить помощи). Пожалуйста, для всех сообщений о сбоях или вопросов относительно используемой версии MySQL используйте скрипт mysqlbug !
В поставке MySQL для Windows файл mysqld.exe по умолчанию скомпилирован с поддержкой трассировочных файлов.
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|