从源码编译mysql,源程序编译和解释的基本概念
本文内容列表:
- 1、Windows下如何编译或调试MySQL
- 2.mysql5.6.33源码编译
- 3.如何编译mysql 5.5
如何在Windows下编译或调试MySQL
只需使用 vs code。
Visual Studio Code
Visual Studio Code(简称VS Code)是微软开发的开源文本编辑器,支持Windows、Linux和macOS操作系统。支持调试,内置Git版本控制功能,还具有开发环境功能,如代码补全(类似IntelliSense)、代码片段、代码重构等。编辑器支持用户自定义配置,如颜色、键盘快捷键、编辑器属性和其他参数。它还支持扩展,并在编辑器中具有内置的扩展管理功能。
安装 LLDB
LLDB 是 LLVM 编译器的一部分。推荐使用Homebrew安装LLVM工具集。不建议使用系统自带的LLDB。安装前必须创建证书,否则无法安装。步骤如下:
创建完成后,开始安装LLVM
install llvm --with-python@2 --with-lldb
安装插件
VS代码自带调试功能。这里我推荐使用LLDB调试器插件。
接下来,配置项目的调试参数。
配置调试参数
使用VS Code打开MySQL源码目录,选择侧边栏的Debug一栏,添加配置,program输入需要调试的程序路径,这里选择你编译的mysqld路径,args输入程序启动位置所需的参数通常在mysqld配置文件中指定。现在配置完成了,是不是很简单呢?
开始调试
单击开始按钮。如果启动后没有设置断点,mysqld正常启动。当断点被触发时,会显示如下图。
整个调试窗口基本分为六部分,所有的调试操作都在这里完成:
1:变量信息
2:设置焦点变量
3:调用堆栈信息显示 4:设置断点信息,也可以在代码行号之前设置断点
5:代码显示区,上方为调试按钮,包括继续/步过/步入/步出/重启/停止
6:调试终端输入输出区
断点设置
在代码行号前点击您可以根据行为或条件设置断点。以条件断点为例。程序启动时,会根据你设置的条件表达式来决定是否触发断点。
条件断点 该方法用于当目标变量达到某个条件时触发断点,并跳过其余部分继续执行。例如:如果设置一个变量等于目标表的名称,则会触发断点,而其他表将被跳过。相对函数名断点省去了很多手动跳转操作。
远程调试
如果你想在远程Linux服务器上调试MySQL,上面的方法不适合。这种情况下就需要远程调试。 lldb和gdb都支持远程调试。这里我们以lldb为例。
需要先在远程主机上安装lldb,使用yum安装,源地址在这里
远程$ yum install -y llvm-toolset-7
安装完成后,启动lldb -server
remote$ /opt/rh/llvm-toolset-7/root/usr/bin/lldb-serverplatform --listen "*:9191" --server
接下来在VS中添加一个新的配置项代码调试界面。
{
"类型":"lldb",
"请求":"附加",
"名称":"远程附加",
"程序":"~/mysql5626/ usr/local/mysql/bin/mysqld",
"pid":"target_pid",
"initCommands": [
"平台选择远程-Linux",
"平台连接 connect:/ /remote_host:9191"
],
"sourceMap": {
"/export/home/pb2/build/sb_0-15908961-1436910670.17/mysql-5.17/mysql-5.6"/bin.工作台/mysql-服务器“
}
},
程序:本地机还必须复制并加载目标程序的副本。
pid:填写远程主机的mysqld进程ID。
sourceMap:完成mysqld编译的代码路径与本地代码库路径的映射。这样调试时可以结合程序查看代码
注意:调试前记得将代码切换到与目标程序版本一致的分支

mysql5.6.33源码编译
重点不在这里,重点是下面的错误:
[ERROR]插件'InnoDB'初始化函数返回错误。
[ERROR]插件'InnoDB'注册为STORAGE ENGINE失败。
[错误] 未知/不受支持的表类型:InnoDB
[错误] 中止
删除您的 datadir 数据目录。重新运行mysql_install_db
如何编译mysql 5.5
先安装cmake和gcc
然后~~~
1、解压mysql文件,tar xf mysql-5.1.51.tar.gz2, cd mysql-5.1.513, #cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.1 // 这是你指定安装mysql的位置- DMYSQL_DATADIR=/usr/local/mysql5.6/data -DSYSCONFDIR=/usr/local/mysql5.6/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_DWITH_BLACKHOLE_STORAGE=ENG_DWITH_BLACKHOLE_STORAGE_1FEMA_BLACKHOLE_1F FA ULT_CHAR SET = utf8 - DDEFAULT_COLLATION = utf8_general_ci - DENABLED_LOCAL_INFILE = 1 -DWITH_EXTRA_CHARSETS=all -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock #make #make install
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
