在eclipse中配置MySQL源码环境(r12笔记第14天)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 今天费了些周折,总算搭建好了MySQL源码的调试环境,主要的目的就是想在看代码的时候有一些头绪,让这些开发技巧派上用场。不至于盲人摸象一般的拿着命令肉眼扫视,当然对于代码至于能不能啃下来,那是另外一回事了。

今天费了些周折,总算搭建好了MySQL源码的调试环境,主要的目的就是想在看代码的时候有一些头绪,让这些开发技巧派上用场。不至于盲人摸象一般的拿着命令肉眼扫视,当然对于代码至于能不能啃下来,那是另外一回事了。

我来说说我的情况,Java开发还有一点基础,所以以前的eclipse还算用得比较熟悉。大家知道InnoDB的源码是c,MySQL Server的是c++,这样一套环境想调试好,如果没有这方面的平台开发经验其实还是有一点难度的。最后我还是决定使用eclipse来做,基于Windows平台。

里面趟了好几个坑,让我苦不堪言。

先要做几件事情

1)下载MySQL源码

2)下载开发IDE eclipse

3) 编译环境调试

4) 配置代码调试方式

下载MySQL源码

MySQL源码的下载,直接到www.mysql.com上面,选择社区版,下载类型是source code,就可以看到下面的选项了。

img_876ea52946c7a9c06bf6b2ccf05e1315.jpe

比如说我选择的是这个5.6.35的版本。最新的是5.7的,再早一些的是5.5版本的,之前的还真不好找了,得通过其他渠道了。

下载IDE eclipse

eclipse是个开发通用平台的IDE,不过这个说法现在受到了IntelliJ IDEA的挑战,目前来看挑战成功,其中有一部分原因和新版本的一些界面的改进有关,不过相对来说eclipse这个工具Java开发者用得多一些,有些面试里还会问里面的几个快捷键,一问就能问出来i用得怎么样。可能有的朋友就会问,eclipse是Java开发用得多一些,那和MySQL源码环境有什么关系。难道在里面用Java编辑器看c++代码,非也。

因为eclipse还是有c++版的插件的,可以在www.eclipse.org上面下载c++版本专属的。

坑点1

但是下载之后,启动eclipse失败,错误是Failed to load the JNI shared library jvm.dll”,这个错误的大多数说法是和JDK的位数有关,比如32位,64位的兼容性有关,当前的环境是一个JDK6的环境,看来孩不够,我再下载个JDK7的试试。官网已经直接下载不了了,得通过mos下载。

配置好环境之后,收到的错误变样了,我感觉被这个错误玩弄了。

img_daa78ef463dc3ddca52da294b23edd38.png

一个IDE升级那么新版本的JDK干什么,然后又这回来下载JDK8。官网下载的还是安装版的。我就默默的看着下面的这个霸气的硬广,直到安装成功。其实相对来说,我还是喜欢解压版的。

img_9fa421d416ce98c6a593440c05dbe79e.jpe

eclipse可以启动了,我创建了一个项目,我命名为mysql_5_6_35

img_3cc18eccf137b5a8422a2be0f28e0256.jpe

这个时候环境还是基本空白的,先创建好再说。

img_5625e30b9ce4a3e46400d861ebbb7e08.jpe

简单确认之后,就创建好了一个项目,新版本的exlipse就开始生成了工作目录。启动的界面还是不错的。

img_58d2ef8ee063448435bb91081f66681c.jpe

编译环境调试

启动了eclipse,创建了项目,我们可以从指定的目录下导入源码包里的代码。当然不出所料,打开代码之后,发现后台开始报出了下面的错误。编译环境就有有问题。

img_34068dab36b0dee2087bf8549d473dda.png

这个时候如果能配置好还是很有意思的,可以在windows上来安装一下gcc,g++的环境,可以参考https://sourceforge.net/projects/mingw/这个网站,下载即可。

img_98eb6e64b48793c2027d1d6e883ae283.png

这个软件的风格蛮有意思,下载安装包的时候是下面的安装进度,需要安装哪些插件,也基本是这样的形式。

img_076fd3b0fe562ae199ba973c9954dd41.png

我们不光要gcc的,还要g++,在安装好的软件基础上需要再下载新的包来安装。最后会提示安装成功。

img_f879b1cc8c00b36cd6822fea6983c320.jpe

在eclipse里面还是需要做一些基本的配置的。根据红色的框图找到对应的菜单,修改右下角的路径,这个路径就是我们刚刚安装的软件所在的目录。

img_d847988e04d783914802679e82ffe6d8.jpe

比如我安装在了D盘,就配置成下面红框的路径。

img_0eebd9b589422e4d2fe5b83d25ed5fda.png

这个时候还有一个问题,提示make没有配置,这个问题可让我有些摸不着头脑。gcc都装了,make检查了也是安装成功的,为什么提示配置里没有呢。这里有一个梗。我们需要把下面的文件改个名字,其实它就是make

img_dd6f9726006155413d5bb07c9cfe13e2.jpe

配置好环境,编译就大体没有问题了。

img_9a7c5333064ca26678e5f0084b5975b8.png

配置代码调试方式

其实上面的环境配置也算是一个辅助,如果我们只是看看代码,其实也能接受,不过下面的这个功能用不了,查看代码就会困难重重。比如我鼠标点击到代码里的某一个方法,根据调用关系我能够很快定位到另一个文件的调用函数,如此一来查看逻辑就会清楚许多。

但是这个功能在eclipse竟然用不了,熟悉Java开发的同学应该都熟悉这个outline的功能,一个文件里面有哪些函数,哪些变量都可以一目了然,所以这种情况得改进,发现无法启用的原因是我打开的其中一个文件的代码行数超过了5000行。默认eclipse的配置,超过5000行就启用不了outline了,我们改一下红框的配置即可。

img_d6d961ea82655a980cc0845f54f827c5.jpe

配置好之后,重启eclipse就没问题了,可以看到右边的outline信息,求会清晰很多,点击代码也会有这种定位功能,这下看代码就方便多了。比如我们查看InnoDB的代码,到storage/Innobase/handler/ha_innodb.cc这个文件,这会是我学习innodb的一个关键接口文件。

img_d623e9d1ca61e3b915ef58889a7524c5.jpe

环境配置好了,剩下的事情才是重点的内容。
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
SQL 存储 关系型数据库
Mysql优化提高笔记整理,来自于一位鹅厂大佬的笔记,阿里P7亲自教你
Mysql优化提高笔记整理,来自于一位鹅厂大佬的笔记,阿里P7亲自教你
|
1天前
|
Java Android开发
在Eclipse环境下调试Java程序
在Eclipse环境下调试Java程序
8 1
|
9天前
|
存储 关系型数据库 MySQL
实时计算 Flink版产品使用合集之如何配置可以实现实时同步多张MySQL源表时只读取一次binlog
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
9天前
|
关系型数据库 MySQL Java
实时计算 Flink版产品使用合集之同步MySQL数据到Hologres时,配置线程池的大小该考虑哪些
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
9天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错之遇到MySQL服务器的时区偏移量(比UTC晚18000秒)与配置的亚洲/上海时区不匹配,如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
9天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之mysql cdc支持全量的时候并发读取,该如何配置
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
17天前
|
缓存 监控 关系型数据库
2核4G 配置的MySQL 5.6如何调优为最佳qps,tps
要提高具有2核4G配置的MySQL 5.6的QPS(每秒查询率)和TPS(每秒事务数),可以通过以下方法进行调优: 1. 优化配置文件(my.cnf): 在MySQL的配置文件中,可以调整以下参数以提高性能: ``` [mysqld] innodb_buffer_pool_size = 1.5G # 设置InnoDB缓冲池大小,推荐值为服务器总内存的50%-80% max_connections = 500 # 设置最大连接数,根据实际需求进行调整 query_cache_size = 128M # 设置查询缓存大小,推荐值
|
17天前
|
存储 关系型数据库 MySQL
【MySQL系列笔记】分库分表
分库分表是一种数据库架构设计的方法,用于解决大规模数据存储和处理的问题。 分库分表可以简单理解为原来一个表存储数据现在改为通过多个数据库及多个表去存储,这就相当于原来一台服务器提供服务现在改成多台服务器组成集群共同提供服务。
38 8
|
15天前
|
关系型数据库 MySQL API
实时计算 Flink版产品使用合集之可以通过mysql-cdc动态监听MySQL数据库的数据变动吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
124 0
|
10天前
|
存储 SQL 关系型数据库
【MySQL】数据库基础 -- 详解
【MySQL】数据库基础 -- 详解

推荐镜像

更多