当前位置: 首页 > news >正文

mysql-mysql源码本地调试

前言

先进行mysql源码本地编译:mysql源码本地编译

1.本地调试

这里以macbook为例
1.使用vscode打开mysql源码
在这里插入图片描述

2.创建basedir目录、数据目录、配置文件目录、配置文件

cd /Users/test/
mkdir  mysqldir
//创建数据目录和配置目录
cd mysqldir
mkdir conf data
cd conf
touch my.cnf

目录结构如图:
在这里插入图片描述

3.编辑my.cnf配置文件

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/Users/test/mysqldir
datadir=/Users/test/mysqldir/data
socket=/Users/test/mysqldir/mysql.sock
log-error=/Users/test/mysqldir/mysql.err
pid-file=/Users/test/mysqldir/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true[client]
port=3306
socket=/Users/test/mysqldir/mysql.sock

4.初始化mysql

mysql源码编译成功后可执行文件mysqld、mysql会出现在工程的build/bin下

4.1配置mysql数据库debug配置

在工程目录下创建.vscode目录并在该目录下创建launch.json文件
在这里插入图片描述

4.2编辑launcun.json文件

{"version": "0.2.0","configurations": [{"name": "C++ Debug","type": "lldb",//windows系统是cppgdb,macbook系统是lldb"request": "launch","program": "${workspaceFolder}/build/bin/mysqld", // 替换为你的可执行文件路径"args": ["--defaults-file=/Users/test/mysqldir/conf/my.cnf"///"${workspaceFolder}/data.xodr"],//    "stopAtEntry": false,"cwd": "${workspaceFolder}",//   "environment": [],//  "externalConsole": false,//   "MIMode": "lldb",// "setupCommands": [//   {//     "description": "Disable pretty printing",//     "text": "-enable-pretty-printing",//     "args": [],//     "ignoreFailures": true//   }// ],// "miDebuggerPath": "/opt/homebrew/bin/gdb"  // 根据系统修改路径,如 macOS 上可能是 `/opt/homebrew/bin/gdb`}]}

4.3安装codelldb插件

在这里插入图片描述
安装过程中有可能会让你去github下载codelldb-darwin-x64.vsix会很慢,不过放心我已经帮你下载好了

链接: https://pan.baidu.com/s/1FSMyzNfLu9fTaMR1-X2Mzg?pwd=cyv2 提取码: cyv2

下载后之后选择插件下载界面,将该文件拖拽到vscode插件列表区域会自动安装,等待安装成功即可。

4.4开始mysqld启动调试

ctrl+p搜索 sql_parse.cc文件
在这里插入图片描述
开启调试
在这里插入图片描述
进入调试状态
在这里插入图片描述
设置断点
为什么先开启调试再设置断点,因为数据库服务端启动的时候也会执行这个方法,为了影响mysqld的正常启动,等到调试启动后再打断点。
在这里插入图片描述

4.5 启动mysql客户端

进入build/bin启动mysql客户端

./mysql -uroot -p -S /Users/test/mysqldir/mysql.sock

回车进入数据库客户端

在这里插入图片描述
创建数据库

create database test;

使用数据库

use test

创建数据库

create table test(age int,name varchar(15)
) engine=innodb character set utf8mb4;

4.6执行sql进行

客户端执行

select * from test;

此时回到调试界面会看到断点处已经暂停
在这里插入图片描述
到这里关注

int mysql_execute_command(THD *thd, bool first_level) 
中的thd变量,找到m_query_string属性

在这里插入图片描述
好的,结束

相关文章:

  • 基于element-UI 实现下拉框滚动翻页查询通用组件
  • 查看·电脑安装·的 .NET 版本
  • Numpy 数组操作:高效的数据处理利器
  • STUSB4500 PPS(PD3.0)快充SINK模块——应用 解析
  • React和原生事件的区别
  • C++ 模版复习
  • LoRA:高效微调预训练模型的利器
  • 企业数字化转型的7个难点
  • t014-项目申报管理系统 【springBoot 含源码】
  • 7.atlas安装
  • 气镇阀是什么?
  • 大模型长对话中上下文无法承载全部历史,如何压缩或提取重点
  • RAG应用:交叉编码器(cross-encoder)和重排序(rerank)
  • 信息安全管理与评估2025山东卷
  • Root权限:解锁Android的终极力量
  • LLM + RAG + Vanna 综合实战
  • 移动端图片浏览插件
  • 机器视觉视觉中的棋盘格到底是什么?为什么是棋盘格?
  • python训练 60天挑战-day40
  • 在Mathematica中使用WhenEvent求解微分方程
  • 清远网站制作/平台推广策划方案
  • 建筑单位资质/北京网站优化服务商
  • 做视频点播网站要多少带宽/金华百度seo
  • 外贸网站建设价格/百度荤seo公司
  • 网站怎么算抄袭/怎么seo网站排名
  • 日本做外贸网站设计/百度网站域名