MySQL源码构建和在Gdb中调试的配置过程
来源:互联网 发布:js获取偶数行 编辑:程序博客网 时间:2024/05/21 17:36
通过源码学习C++是我一直以来的习惯,上个月把SGI’s STL源码捣鼓了一下,毕竟是在Win下,配置过程还是很顺利的,这个可以参考侯杰的STL源码,一有空我就深入STL,那个才是基础啊。
但是光有基础是不够的,于是MySQL成了我第三个开源项目的被解剖者,第一个是Myseelite,因为当时要做一个P2P流媒体播放器,是基于那个项目的并且移植到Win下,当然这个是实践性最强的一个项目了。MySQL,STL,Linux这些源码也只能抽空小改改,没有时间完全深入,这个还是很郁闷的,因为白天要上班,项目还是比较紧的那种。
环境:rhel 5 64-bit 一个快被我用烂了的Linux,但是一直没重装过,因为一直保留有快照,万一不行了还原下,呵呵。
网上有用BitKeeper下MySQL源码,估计是类似是CVS SVN的版本控制,下了没用还只能找到2.0版本的,访问了他提供的地址,连源码都找不到,是不是被撤了也不知道,反正网上能下到源码,干吗还用版本控制。
http://download.mysql.cn/ 这个网站能下到源码,有4.1.18还有5.0.18的,我下了前者。
前期准备,gcc,autoconf,automake,m4,make等各种工具,我的rhel 5都装好了。
$ tar zxvf mysql-4.1.18.tar.gz
$ cd mysql-4.1.18
$ cp BUILD/compile-pentium-debug BUILD/compile-generic-debug
$ vim BUILD/compile-generic-debug
将文件设置如下:
#! /bin/sh
path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="-g $debug_cflags"
c_warnings="$c_warnings $debug_extra_warnings"
cxx_warnings="$cxx_warnings $debug_extra_warnings"
extra_configs=""
. "$path/FINISH.sh"
$ BUILD/compile- generic-debug 生成make文件
$make test
如下这步可选,如果你要将MySQL安装到系统目录,那么可以执行
$make install
当然还可以用 $./configure 配置选项
接下来就是最重要的调试了
$cd到mysql-test目录下
$cd t
在t目录下你会发现有很多.test文件,文件内容全是sql语句,是预存在MySQL下提供给我们测试的,当然也可以自己新建一个.test文件,里面写上自己要测试的代码。
测试:
$./mysql-test-run –gdb 测试文件名称(注意不带test)
比如测试drop.test文件,那么命令行便是
$./mysql-test-run –gdb drop
运行后会跳出gdb调试窗口,会跳到mysql_parse()函数中的一个预设断点中。
调试完成后,控制台会提示测试结果。
- MySQL源码构建和在Gdb中调试的配置过程
- mysql调试源码过程中遇到的调试问题
- 在mysql中创建和调试存储过程
- 在学习GraytHatPython构建Window调试器过程中遇到的问题
- gdb调试过程中修改变量的值
- 在GDB中关联源码
- gdb调试过程中出现行号错位
- gdb调试过程中debuginfo-install问题
- 在GDB中调试使用了STL的C++程序
- 在eclipse中配置MySQL源码环境
- GDB 在powerpc上的版本编译和调试
- linker源码解析,脱壳点,在分析过程中产生的反调试思路
- GDB在调试运行过程中会由于收到信号而停止
- 如何在eclipse中debug调试进入JDK源码及显示调试过程中的局部变量的值
- 在调试的过程中停电
- 怎样在Centos中配置gcc、g++、和gdb?
- 功能强大的源码级调试器--gdb
- 在Emacs中使用gdb调试程序
- 如何在oracle中查询所有用户表的表名、主键名称、索引、外键等
- oracle 插入时间
- android 异步处理 后台更新
- 学习C++的50条忠告
- 怎么解决FTP上传不方便问题
- MySQL源码构建和在Gdb中调试的配置过程
- android htc 手机 wlan 热点 无法共享 手机网络 解决办法
- ExtJS中表单验证使用自定义vtype示例
- Android getWidth和getMeasuredWidth的正解
- Send a BOOL value from JavaScript to Objective-C(UIWebview interact with app)
- ANDROID音频系统散记之二:resample-1
- Linux操作系统基础知识之二:内存寻址
- 《转》Mirroring、Striping、stripe Mirroring、spanning之间的详细介绍
- Linux Java连接MySQL数据库