vs 调试mysql_Windows下使用VS2015调试MySQL

2016-03-09

最近为了实现mysql的半同步协议,有一个bug很难重现,特意研究了一下怎么debug mysql,此篇为windows篇。

***

0. 软件环境(mysql,vs,cmake都是当前最新版本)

MySQL:mysql-5.7.11.zip Sorce Distribution

IDE:Visual Studio Communty 2015(含update1)(根据官网的说法mysql5.7.11 源码调试至少需要VS2013以上版本)

Cmake:cmake-3.5.0-rc3-win32-x86.msi 现官网已经提供稳定版cmake-3.5.0-win32-x86.msi

Bison:bison-2.4.1-setup

Editor:随意,能改文件编码格式就行

Virtual ISO:UrtlaISO 9.6(Option) 或者其他虚拟光驱软件

1. 软件安装

1.1 安装Visual Studio Communty 2015

选择Visual C++环境。

这里遇到了2个坑

1.1.1.Team Foundation Server 2015 Update 1 装不上,报错,安装退出。

原因:requirements: Windows 7 (minimum SP1) (Home Premium, Professional, Enterprise, Ultimate)

解决办法,把自己的电脑从win7 home basic 升级一下,为防止有问题,我升到了旗舰版。

1.1.2.BuildTools_MSBuild(86) 遇到严重错误,报错,安装退出。

原因:软件需求是 framework需求4.5.1以上

解决办法: 解决办法: 手动单独安装了.NET Framework 4.6.1,手动安装了Microsoft Build Tools 2015,之后再重装VS2015,PASS.

可能安装了Framework 4.6.1,直接重装VS2015应该也能过,没试过,如果遇到了,可以试一下。

1.2 安装CMake, Bison

将各自bin目录加入到Path环境变量,文件目录不要有空格。

2.源码下载

源码位置在 http://dev.mysql.com/downloads/mysql/

选择 Windows (Architecture Independent), ZIP Archive (mysql-5.7.11.zip)

configure的时候会提示你需要指定参数BOOST_INCLUDE_DIR和DOWNLOAD_BOOST,这样configure会自动下载BOOST。

下载完成解压以后需要修改文件sqlsql_locale.cc的格式,改为Unicode就好了。

否则编译时候会报错,改过之后也会报warning,但是warning就不影响我们调试了。

3.configure

打开Cmake(CMake-gui)程序,在where is the source code:文本框填入源码目录(G:mysqlmysql-5.7.11),

在where to build the binaries:填入make 目录(G:mysqlmysql-server_make),这两个目录我是分开的,便于管理。

勾选Advanced。

点击Configure,在弹出的对话框中选择适当的平台(本处选择Visual Studio 14). 然后点击Finish。

点击Generate。一段时间后提示完成。

可在MAKE目录下发现mysql.sln,双击可以用VS2015 打开了。

4.BUILD

VS龟速载入后,在ALL_BUILD 右键生成。。。然后就默默等吧。。

如果碰到错误也不会停,最后生成完看下log对应一下。

我这里生成没碰到什么异常

5.mysql服务启动

自己建立一个工作目录,eg: G:mysqlmysql-server_debug.

次目录下建立data,share以及lib,lib下建立plugin

把make目录生成的一些文件copy过来,

如share下的english 和plugin下的对应dll以及lib(没有lib行不?) ,我这里要debug半同步,所以把半同步的dll和lib拷贝过来了。

写mysql.ini 的配置,略,保存到G:mysqlmysql-server_debugrunmy.ini。记得配置里的目录都要建立好

第一次启动mysql

打开命令行提示符

到了make目录下G:mysqlmysql-server_makesqlDebug> mysqld.exe --initialize-insecure --basedir=G:\mysql\mysql-server_debug --datadir=G:\mysql\mysql-server_debug\data 生成初始文件

这样会在data下生成mysql的系统db (mysql,performance_schema,sys).

如果有报错缺失文件,可以自己从make目录里copy过来。

以后启动mysql可以用mysqld.exe --defaults-extra-file=G:mysqlmysql-server_debugrunmy.ini

mysql客户端可以在另一个命令提示符里打开client目录(G:mysqlmysql-server_makeclientDebug)下执行 mysql -uroot

停止服务可以在另一个命令提示符里打开client目录(G:mysqlmysql-server_makeclientDebug)下执行mysqladmin -uroot shutdown

6.本地vs调试mysql

方式一附加到进程

打开VS2015调试-附加到进程,在弹出对话框中选择mysqld.exe进程,点击附加。

就可以在VS中添加断点调试mysql了。

方式二

将mysqld设置为默认启动项目,点击调试-mysql属性,在弹出对话框中配置属性中点击选择调试,在命令参数里面添加--defaults-extra-file=G:mysqlmysql-server_debugrunmy.ini。

启动本地windows调试器,这样就可以增加断点调试了

参考资料

***

姊妹篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值