Несколько статей написали несколько статей для анализа взаимоблокировок путем отладки исходного кода MySQL.Читатели спрашивают, как использовать исходный код отладки IDE, в этой статье кратко рассказывается, как отлаживать под Mac.
Причина, по которой я использую метод отладки для анализа проблемы тупика, заключается в том, что я запутался в процессе решения тупика MySQL. Даже если я найду причину, сложнее убедить себя, что принцип такой же, как один В книге или онлайн-блоге, поэтому я начал изучать его. Исходный код MySQL, потребовался некоторое время для создания среды для отладки исходного кода в Clion. Весь процесс на самом деле очень простой и гладкий.
Скачать клион
Clion — это инструмент IDE C/C++, принадлежащий компании jetbrains, второй по величине IDE-компании во вселенной. IntelliJ IDEA для Java, PyCharm для Python и Goland для Go принадлежат этой компании. Они очень хорошие и мощные. Загрузите и установите со следующего адреса:www.jetbrains.com/clion/
Скомпилируйте и установите MySQL
Здесь выбран исходный код версии 5.5. Размер исходного кода и скорость компиляции намного выше, чем у 5.7. Для понимания принципа работы MySQL нам особой разницы нет, поэтому здесь выбрана 5.5.
# 1. 下载解压源码
wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.62.tar.gz
tar -xzvf mysql-5.5.62.tar.gz
# 2. 生成目录
// 生成编译后安装目录及数据目录
mkdir -p build_out/data
# 3.编译
cmake . -DWITH_DEBUG=1 \
-DCMAKE_INSTALL_PREFIX=build_out \
-DMYSQL_DATADIR=build_out/data
make && make install
# 4. 初始化 mysql 数据库
cd build_out
scripts/mysql_install_db
Конфигурация Клиона
1. Настройте Cmake, как показано на рисунке ниже
2. Настройте параметры запуска mysqld и укажите путь файла конфигурации для чтения--defaults-file=/path/to/my.cnf
Эталонная конфигурация my.conf выглядит следующим образом.
[mysqld]
log-error=log.err
datadir=data
pid-file=user.pid
skip-grant-tables
innodb_file_per_table=1
port=33060
transaction_isolation = READ-COMMITTED
[client]
# 客户端来源数据的默认字符集
default-character-set = utf8mb4
[mysqld]
# 服务端默认字符集
character-set-server=utf8mb4
# 连接层默认字符集
collation-server=utf8mb4_unicode_ci
[mysql]
# 数据库默认字符集
default-character-set = utf8mb4
Нажмите кнопку отладки, чтобы отладить
PS: Обратите внимание, что список, где расположен MySQLD, не сортируется в алфавитном порядке, вы можете найти его, отчаянно потянув.
Неудивительно, что в это время MySQL запущен, слушая установленный нами выше порт 33060, и с помощью клиента MySQL можно нормально подключиться (учетная запись root, пароль пустой)
Cion может быть очень удобен для пошагового прохождения точек останова и просмотра значений переменных, например, мы находимся вsql_parse.cc
изdo_command
Нажмите функцию точки останова, просто выполните оператор SQL, можно увидеть здесь