热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Windows搭建Mysql调试环境

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

有时我们想知道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执行



      推荐阅读
      • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
      • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
        本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
      • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
      • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
        本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
      • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
      • Windows 7 部署工具DISM学习(二)添加补丁的步骤详解
        本文详细介绍了在Windows 7系统中使用部署工具DISM添加补丁的步骤。首先需要将光驱中的安装文件复制到指定文件夹,并进行挂载。然后将需要的MSU补丁解压并集成到系统中。文章给出了具体的命令和操作步骤,帮助读者完成补丁的添加过程。 ... [详细]
      • MyBatis多表查询与动态SQL使用
        本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
      • r2dbc配置多数据源
        R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
      • 延迟注入工具(python)的SQL脚本
        本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
      • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
        随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
      • svnWebUI:一款现代化的svn服务端管理软件
        svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
      • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
      • VSCode快速查看函数定义和代码追踪方法详解
        本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
      • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
      • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
        本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
      author-avatar
      UJXo小妖春日望美
      这个家伙很懒,什么也没留下!
      PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
      Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有