В исходном коде 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 в первую очередь?