暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Windows搭建Mysql调试环境

程序员升级之路 2021-06-27
537

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


一、软件版本

软件
版本
Visual Studio
Vs2008
Mysql
5.6.17
CMake

3.14.1

Bison2.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函数,注释掉以下代码

    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项目设为启动项目就可以调试了。



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

      handle_one_connection
      do_command
      dispatch_command
      mysql_exexute_command
      复制


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



      DDD的一些基本概念

      聊聊DDD的分层架构

      MyBatis源码分析三:Sql执行

      文章转载自程序员升级之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论