win mysql编译_windows下编译调试mysql

mysql在类linux环境下的编译、调试相信大家都应该有所了解,和其他的GNU工具没有两样:configure、make、gdb。。。 当然具体的参数选项可能会很多,可以参考官方文档。

本文试就windows开发环境下的mysql编译调试做些表述:

用到的工具: vs2005 bison cmake

1. 在WIN下配置好bison cmake的环境变量,注意安装这两个工具的路径尽量不要带有空格

2. 参照$mysql_src\win\README,执行vs2005所对应的build-vs8.bat, 生成相应的solution文件等等如图所示:

moz-screenshot-2.pnga.jpg

3. 在vs中可以打开生成的solution文件:

sln.jpg

4. source目录中比较重要的几个目录:

BUILD  各个平台的编译脚本,可以关注 compile-pentium-debug

client    平时我们经常会用到的mysql客户端工具,比如mysql mysqldump

mysys   系统编程接口的封闭,cross-platform:)

storage 这个是核心,存储引擎嘛。重点可以看innodb myisam和example,特别是example,专门是为程序员demo的

sql        这个最重要了,mysqld所在哈

5. 需要手工修改一下sql_locale.cc的编码,另存为UTF-8,这样子编译mysqld的时候才可以过,详情可参考mysql bug36281

6. 现在编译mysqld可以成功了,试着运行下,还有问题:

mysql_crash1.jpg

于是到mysqld.cc的4267行看了下是个DBUG_ASSERT语句,懒的细看,直接注掉,重build,没问题鸟终于。。。

7.  剩下的就是按照出错提示,创建目录sql\data

8.  查看mysql-5.1.45\sql\data\t-wuyun.err错误LOG: Fatal error: Can’t open

and lock privilege tables: Table ‘mysql.host’ doesn’t exist。

拷贝mysql-5.1.45\win\data\mysql到mysql-5.1.45\sql\data\mysql,再次运行mysql-

5.1.45\sql\debug\mysqld.exe,终于彻底静悄悄了~~~

9.  终于可以单步debug了:

mysql-5.1.45\sql\debug\mysqld.exe –debug –standalone 先启动好mysql server

在VS中attach到该进程,如图所示

attach.jpg

下个断点,再启个mysql客户端请求一下:

mysql-5.1.45\client\debug\mysql.exe -uroot -p

mysql>show authors;

我们最喜爱的画面终于出现鸟:

debug.jpg

10.  收尾工作: mysql-5.1.45\client\debug\mysqladmin.exe -uroot -p shutdown

11.  现在想干什么想了解什么,就可以为所欲为了~~~比如了解select/insert/update/delete的数据库内部详细实现流程,甚至是mysql的执行计划选择,innodb的细节等等。

最后唠叨一句: 能用GDB调试学习就用GDB吧,在WINDOWS下配置真的不容易,关键是GDB的速度真不是盖的 : )

参考资料:

0

0

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-01-28 16:27

浏览 3207

分类:数据库

评论

我QQ:234149861

楼主能否加我,指定下。强烈渴望读源码,但一直配置不成功!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值