设为首页 收藏本站
查看: 1903|回复: 0

[经验分享] windows下编译调试mysql

[复制链接]

尚未签到

发表于 2016-9-11 09:41:10 | 显示全部楼层 |阅读模式
  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文件等等如图所示:
http://qa.taobao.com/DOCUME%7E1/wuyun.xl/LOCALS%7E1/Temp/moz-screenshot-2.pnghttp://qa.taobao.com/wp-content/uploads/2010/10/a.jpg
  3. 在vs中可以打开生成的solution文件:
http://qa.taobao.com/wp-content/uploads/2010/10/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可以成功了,试着运行下,还有问题:
http://qa.taobao.com/wp-content/uploads/2010/10/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 openand 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到该进程,如图所示
http://qa.taobao.com/wp-content/uploads/2010/10/attach.jpg
  下个断点,再启个mysql客户端请求一下:
  mysql-5.1.45\client\debug\mysql.exe -uroot -p
  mysql>show authors;
  我们最喜爱的画面终于出现鸟:
http://qa.taobao.com/wp-content/uploads/2010/10/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的速度真不是盖的 : )
  参考资料:
  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.iyunv.com/u2/72491/showart_1831952.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-270636-1-1.html 上篇帖子: c 连接Mysql数据库 下篇帖子: mysql常用命令1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表