Spec-Zone.ru › MariaDB

Отладка MariaDB с отладчиком

Если у вас MariaDB скомпилирован для отладки, вы можете использовать его в отладчике, таком как ddd или gdb, и получить полные трассировочные файлы выполнения MariaDB. Трассировочные файлы позволяют вам увидеть поток кода и сравнить различия в выполнении, сравнив два трассировочных файла.

Также значительно проще исследовать дампы памяти, если они получены из отладочной бинарной версии.

Обратите внимание, что бинарная версия, скомпилированная для отладки и трассировки, примерно на 10-20% медленнее обычной бинарной версии. Если вы просто компилируете бинарную версию для отладки (опция -g с gcc), разница в скорости по сравнению с обычной бинарной версией незначительна.

Проверка, что MariaDB скомпилирован для отладки

Выполните:

mariadbd --debug --help

Если вы используете MariaDB до версии 10.5, то вам следует использовать mysqld вместо mariadbd!

Если вы получите ошибку unknown option '--debug, значит MariaDB не скомпилирован для отладки и трассировки.

Компиляция MariaDB для отладки начиная с версии 5.5

В Unix необходимо передать -DCMAKE_BUILD_TYPE=Debug в cmake, чтобы скомпилировать с отладочной информацией.

Компиляция MariaDB 5.3 и более ранних версий

Вот как компилировать с отладкой в более старых версиях:

Используйте скрипты в каталоге BUILD, которые будут компилировать MariaDB с наиболее распространёнными отладочными параметрами и плагинами, например:

./BUILD/compile-pentium64-debug-max

Для наиболее распространённых конфигураций в каталоге BUILD существует настроенный скрипт.

Если вы хотите использовать valgrind, очень хорошее средство для интроспекции памяти и проверки переполнений, используйте

./BUILD/compile-pentium64-valgrind-max

Некоторые рекомендуемые скрипты отладки для Intel/AMD:

BUILD/compile-pentium64-debug-max
BUILD/compile-pentium64-valgrind-max

Это пример того, как скомпилировать MariaDB для отладки в домашней директории с MariaDB 5.2.9 в качестве примера:

cd ~
mkdir mariadb
cd mariadb
tar xvf mariadb-5.2.9.tar.gz
ln -s mariadb-5.2.9 current
cd current
./BUILD/compile-pentium64-debug-max

Последняя команда создаст отладочную версию sql/mysqld.

Отладка MariaDB из каталога исходных кодов

Создание каталога базы данных MariaDB

В следующем примере базы данных MariaDB создаются в /data.

./scripts/mariadb-install-db --srcdir=. --datadir=/data

Запуск MariaDB в отладчике

В данном примере используется ddd, отличный графический отладчик для Linux. Если у вас не установлен ddd, вы можете использовать gdb вместо него.

cd sql
ddd ./mariadbd &

В ddd или gdb

run --datadir=/data --language=./share/english --gdb

Вы можете установить параметры в вашем файле /.my.cnf, чтобы не повторять их в строке run.

Если вы запустите mysqld с --debug, вы получите трассировочный файл в /tmp/mysqld.trace, показывающий, что происходит.

Обратите внимание, что в файле конфигурации могут быть разные параметры для каждой версии MariaDB (например, для указания каталога с языковыми файлами).

Отладка сервера MariaDB с помощью mariadb-test-run

Если при запуске mariadb-test-run произойдёт сбой, вы можете отладить его в отладчике, используя один из следующих вариантов:

mariadb-test-run --gdb failing-test-name

или, если вы предпочитаете отладчик ddd:

mariadb-test-run --ddd failing-test-name

Образец файла .my.cnf для облегчения отладки

[client-server]
socket=/tmp/mysql-dbug.sock
port=3307

[mariadb]
datadir=/my/data
loose-innodb_file_per_table
server_id= 1
log-basename=master
loose-debug-mutex-deadlock-detector
max-connections=20
lc-messages=en_us

[mariadb-10.0]
lc-messages-dir=/my/maria-10.0/sql/share

[mariadb-10.1]
lc-messages-dir=/my/maria-10.1/sql/share

[mariadb-10.2]
lc-messages-dir=/my/maria-10.2/sql/share

[mariadb-10.3]
lc-messages-dir=/my/maria-10.3/sql/share

Вышеупомянутый .my.cnf файл:

  • Использует явное сокетное соединение для клиента и сервера.
  • Предполагает, что исходные коды сервера находятся в /my/maria-xxx. Вы должны изменить это, указав путь к вашим исходным кодам.
  • Содержит уникальный фрагмент для каждой версии MariaDB, чтобы не нужно было указывать --lc-messages-dir или --language, даже если вы переключаетесь между отладкой разных версий MariaDB.

См. также

  • Создание трассировочного файла
  • Настройка MariaDB с помощью my.cnf
  • Запуск mariadbd из каталога сборки
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не предварительно проверяется MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают мнения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/debugging-mariadb-with-a-debugger/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API