E.1.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 по умолчанию скомпилирован с
поддержкой трассировочных файлов.
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий
|