searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

WIN环境下MySQL 8 Debug Trace

2024-06-26 09:44:27
86
0

1.软件包下载及安装

mysql-debug包:

Debug软体包下载:[dev.mysql.com/downloads/mysql/]
image.png

Visual Studio 2019下载:[learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes]
image.png

选择“使用C++的桌面开发”,自定义路径,安装即可
image.png

源码编译包:

按照[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版本解压路径)执行目录下
image.png
非安全模式初始化数据文件:

F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqld-debug --standalone --initialize-insecure --console --datadir=F:\debugmysql\mysqldebug-8.0.34-winx64\data

image.png

启动服务:

全局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

image.png

源码编译包:

启动服务:

全局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
image.png

3.mysql/mysqltest客户端连接测试

mysql-debug包:

F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqltest -uroot -p

show variables like '%debug%';
image.png

非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%';
image.png

非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';
image.png

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
image.png

4.SQL执行调用链Debug输出测试

mysql-debug包:

确认debug模式已开启

F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqltest -uroot -p

show variables like '%debug%';
image.png

执行select version();查询其调用链
image.png
F:\debugmysql\mysqldebug-8.0.34-winx64\mysqld.trace文件中select version()语句的函数调用链如下
image.png

可对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%';
image.png

执行select version();查询其调用链
image.png

F:\debugmysql\mysqlserver8\mysqld.trace文件中select version()语句的函数调用链如下
image.png

F:\debugmysql\mysqlserver8\client.trace文件中select version()语句的函数调用链如下
image.png

可对trace文件的函数进行记录,在源码调试中设置断点进行调试;其中mysqld.trace中的函数在mysqld调试程序中调试,client.trace中的函数在mysql调试程序中调试。

0条评论
作者已关闭评论
c****5
1文章数
0粉丝数
c****5
1 文章 | 0 粉丝
c****5
1文章数
0粉丝数
c****5
1 文章 | 0 粉丝
原创

WIN环境下MySQL 8 Debug Trace

2024-06-26 09:44:27
86
0

1.软件包下载及安装

mysql-debug包:

Debug软体包下载:[dev.mysql.com/downloads/mysql/]
image.png

Visual Studio 2019下载:[learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes]
image.png

选择“使用C++的桌面开发”,自定义路径,安装即可
image.png

源码编译包:

按照[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版本解压路径)执行目录下
image.png
非安全模式初始化数据文件:

F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqld-debug --standalone --initialize-insecure --console --datadir=F:\debugmysql\mysqldebug-8.0.34-winx64\data

image.png

启动服务:

全局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

image.png

源码编译包:

启动服务:

全局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
image.png

3.mysql/mysqltest客户端连接测试

mysql-debug包:

F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqltest -uroot -p

show variables like '%debug%';
image.png

非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%';
image.png

非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';
image.png

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
image.png

4.SQL执行调用链Debug输出测试

mysql-debug包:

确认debug模式已开启

F:\debugmysql\mysqldebug-8.0.34-winx64\bin\mysqltest -uroot -p

show variables like '%debug%';
image.png

执行select version();查询其调用链
image.png
F:\debugmysql\mysqldebug-8.0.34-winx64\mysqld.trace文件中select version()语句的函数调用链如下
image.png

可对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%';
image.png

执行select version();查询其调用链
image.png

F:\debugmysql\mysqlserver8\mysqld.trace文件中select version()语句的函数调用链如下
image.png

F:\debugmysql\mysqlserver8\client.trace文件中select version()语句的函数调用链如下
image.png

可对trace文件的函数进行记录,在源码调试中设置断点进行调试;其中mysqld.trace中的函数在mysqld调试程序中调试,client.trace中的函数在mysql调试程序中调试。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0