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文件等等如图所示:

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

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可以成功了,试着运行下,还有问题:

于是到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到该进程,如图所示

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

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

mysql>show authors;

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

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

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

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

参考资料:

http://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.0/en/windows-source-build-cmake.html

http://bugs.mysql.com/bug.php?id=36281

http://forge.mysql.com/wiki/Building_MySQL_on_Windows

http://forge.mysql.com/wiki/CMake

http://blog.chinaunix.net/u2/72491/showart_1831952.html

你可能感兴趣的:(sql,sql,mysql,windows,linux,server)