В исходном коде mysql есть функция "DBUG_ENTER", теперь я использую GDB для отладки сервера, и как я могу открыть переключатель "DBUG_ENTER" для печати журнала?

Например, я удалю строку в одной таблице, которая использует механизм innodb, и как вывести отладочную информацию на консоль, например, DBUG_ENTER.

2 ответа

Короче говоря, как сказал @geert3, перекомпилируйте с отладочной информацией и запустите сервер с флагом отладки.

MySQL 5.6 в Ubuntu.

Вам необходимо получить mysqld из исходников и скомпилируйте с отладочной информацией:cmake -DWITH_DEBUG=1, Вы можете добавить опцию -DCMAKE_INSTALL_PREFIX=/your/test/dir не разрушать вашу MySQL оригинальную установку. Затем, как обычно, make; make install;,

Запустите тестовый сервер вручную. В Ubuntu: export PATH=/your/test/dir/bin:$PATH; export LD_LIBRARY_PATH=/your/test/dir/lib:$LD_LIBRARY_PATH; sudo /your/test/dir/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid --debug (обратите внимание на добавленный флаг --debug).

Если вы не уверены, как его следует запускать на вашей конкретной платформе, проверьте, как он запускается менеджером службы вашей установки. В Ubuntu, перед настройкой PATH а также LD_LIBRARY_PATH переменные: sudo service mysql start; ps -ef|fgrep mysqld,

Это все. DBUG_ENTER не отправлять следы на консоль. Они отправлены /tmp/mysqld.trace,

Чтобы остановить тестовый сервер, в Ubuntu найдите PID тестового сервера. sudo cat /var/run/mysqld/mysqld.pid и отправьте ему сигнал TERM kill <your-server-PID>,

Это макросы, которые раскрываются во время компиляции. Чтобы использовать их, вам, вероятно, нужно перекомпилировать MySQL в режиме отладки. В обычных дистрибутивах они ничего не делают.

Но почему вы отлаживаете сервер MySQL в первую очередь?

Другие вопросы по тегам