前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows搭建Mysql调试环境

Windows搭建Mysql调试环境

作者头像
心平气和
发布2021-07-15 13:09:11
1.3K0
发布2021-07-15 13:09:11
举报
文章被收录于专栏:程序员升级之路

有时我们想知道Mysql执行一条Sql语句中到底做了什么,最可靠的答案就是自己调试下Mysql,下面讲述如何在Windows下搭建Mysql调试环境。

一、软件版本

软件

版本

Visual Studio

Vs2008

Mysql

5.6.17

CMake

3.14.1

Bison‍‍

2.4.1

CygWin

最新版

二、安装步骤

1、安装Vs2008,具体过程不述,可以在微软的官网上下载。

https://www.microsoft.com/zh-cn/download/details.aspx?id=13276

2、下载mysql,从mysql官网选择5.6.17

https://downloads.mysql.com/archives/community/

3、安装CMake,以下是官网地址

http://www.cmake.org/cmake/resources/software.html,

安装路径最好不要有空格或中文,安装好后将bin目录添加到系统环境变量中

4、安装GNUWin32 Bison,下载地址为:http://gnuwin32.sourceforge.net/packages/bison.htm, 同样安装路径最好为英文,并且不要有空格。安装后将bin路径添加到系统环境变量。

这个安装包做的不好,下载好建议执行bin下面的文件,看是否有报错,如果报什么dll不存在,可以从网上下载相应的dll文件放到系统目录 下

5、安装CygWin,下载地址为:http://www.cygwin.com

选择最新版就可以了

6、生成vs的解决方案文件:

cmake . -G "Visual Studio 9 2008"

这一步执行完成后会生成解决方案文件mysql.sln文件。

7、将sql/sql_locale.cc文件改成utf-8编码,选择格式为:utf-8 with bom

8、修改文件sql\mysqld.cc中的test_lc_time_sz函数,注释掉以下代码

代码语言:javascript
复制
if ((*loc)->max_month_name_length != max_month_len ||

(*loc)->max_day_name_length != max_day_len)

{

DBUG_PRINT("Wrong max day name(or month name) length for locale:",

("%s", (*loc)->name));

DBUG_ASSERT(0);

}

9、设置调试参数,--explicit_defaults_for_timestamp --skip-grant-tables

然后就可以Debug了,中间如果有编译报错,可以看下具体报什么错,然后可以手动执行相应的命令行。

三、调试

总共下来,一共有120多个工程,以下是本机的截图:

将mysqld项目设为启动项目就可以调试了。

以下是一些关键函数断点:

代码语言:javascript
复制
handle_one_connection
do_command
dispatch_command
mysql_exexute_command

然后我们可以观察每个变量的值进行调试了:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档