1.软件包下载及安装
mysql-debug包:
Debug软体包下载:[dev.mysql.com/downloads/mysql/]
Visual Studio 2019下载:[learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes]
选择“使用C++的桌面开发”,自定义路径,安装即可
源码编译包:
按照[dev.mysql.com/doc/refman/8.0/en/source-installation-prerequisites.html]指引下载环境前置条件和源码code包进行编译
2.启动mysqld/mysqld-debug服务
mysql-debug包:
依赖文件拷贝:
解压mysql-8.0.34-winx64-debug-test.zip包后,从源码编译版本的执行路径F:\debugmysql\mysqlserver8\cmake-build-debug\build\runtime_output_directory\Debug拷贝libcrypto-3-x64.dll、libprotobuf-debug.dll、libprotobuf-lite-debug.dll、libprotoc.dll、libssl-3-x64.dll文件到F:\debugmysql\mysqldebug-8.0.34-winx64\bin(DEBUG版本解压路径)执行目录下
非安全模式初始化数据文件:
F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqld-debug --standalone --initialize-insecure --console --datadir=F:\debugmysql\mysqldebug-8.0.34-winx64\data
启动服务:
全局debug模式
F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqld-debug --standalone --console --debug=d:t:L:F,info,error,query,general,where:O,F:\debugmysql\mysqldebug-8.0.34-winx64\mysqld.trace --datadir=F:\debugmysql\mysqldebug-8.0.34-winx64\data
非debug模式
F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqld-debug --standalone --console --datadir=F:\debugmysql\mysqldebug-8.0.34-winx64\data
源码编译包:
启动服务:
全局debug模式
F:\debugmysql\mysqlserver8\cmake-build-debug\build\runtime_output_directory\Debug\mysqld --console --debug=d:t:L:F,info,error,query,general,where:O,F:\debugmysql\mysqlserver8\mysqld.trace
非debug模式
F:\debugmysql\mysqlserver8\cmake-build-debug\build\runtime_output_directory\Debug\mysqld --console
3.mysql/mysqltest客户端连接测试
mysql-debug包:
F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqltest -uroot -p
show variables like '%debug%';
非debug模式启动的mysqld-debug,可通过如下指令开启debug
会话级:
set session debug='d:t:L:F,info,error,query,general,where:O,F:/debugmysql/mysqldebug-8.0.34-winx64/mysqld.trace';
全局级:
set global debug='d:t:L:F,info,error,query,general,where:O,F:/debugmysql/mysqldebug-8.0.34-winx64/mysqld.trace';
源码编译包:
F:\debugmysql\mysqlserver8\cmake-build-debug\build\runtime_output_directory\Debug\mysql -uroot -p
show variables like '%debug%';
非debug模式启动的mysqld,可通过如下指令开启debug
会话级:
set session debug='d:t:L:F,info,error,query,general,where:O,F:/debugmysql/mysqlserver8/mysqld.trace';
全局级:
set global debug='d:t:L:F,info,error,query,general,where:O,F:/debugmysql/mysqlserver8/mysqld.trace';
debug编译版本的mysql也可以开启debug模式连接
F:\debugmysql\mysqlserver8\cmake-build-debug\build\runtime_output_directory\Debug\mysql -uroot -p --debug=d:t:L:F,info,error,query,general,where:O,F:\debugmysql\mysqlserver8\client.trace
4.SQL执行调用链Debug输出测试
mysql-debug包:
确认debug模式已开启
F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqltest -uroot -p
show variables like '%debug%';
执行select version();查询其调用链
F:\debugmysql\mysqldebug-8.0.34-winx64\mysqld.trace文件中select version()语句的函数调用链如下
可对trace文件的函数进行记录,在源码调试中设置断点进行调试
源码编译包:
确认debug模式已开启
F:\debugmysql\mysqlserver8\cmake-build-debug\build\runtime_output_directory\Debug\mysql -uroot -p --debug=d:t:L:F,info,error,query,general,where:O,F:\debugmysql\mysqlserver8\client.trace
show variables like '%debug%';
执行select version();查询其调用链
F:\debugmysql\mysqlserver8\mysqld.trace文件中select version()语句的函数调用链如下
F:\debugmysql\mysqlserver8\client.trace文件中select version()语句的函数调用链如下
可对trace文件的函数进行记录,在源码调试中设置断点进行调试;其中mysqld.trace中的函数在mysqld调试程序中调试,client.trace中的函数在mysql调试程序中调试。