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

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属性

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

http://www.lryc.cn/news/2392857.html

相关文章:

  • PCIe— Legacy PCI
  • PostgreSQL数据库配置SSL操作说明书
  • MySQL 的 super_read_only 和 read_only 参数
  • 低碳理念在道路工程中的应用-预制路面
  • 12-后端Web实战(登录认证)
  • TIDB创建索引失败 mkdir /tmp/tidb/tmp_ddl-4000/1370: no such file or directory.
  • Redis 插入中文乱码键
  • Mac OS 使用说明
  • 4.2.2 Spark SQL 默认数据源
  • 234. Palindrome Linked List
  • 广州邮科高频开关电源:以创新科技赋能通信能源绿色未来
  • day41 python图像识别任务
  • 无人机报警器探测模块技术解析!
  • Docker 替换宿主与容器的映射端口和文件路径
  • 我的3种AI写作节奏搭配模型,适合不同类型写作者
  • Bonjour
  • 华为云Flexus+DeepSeek征文 | 基于Dify和DeepSeek-R1开发企业级AI Agent全流程指南
  • HarmonyOS-ArkUI固定样式弹窗(1)
  • 痉挛性斜颈相关内容说明
  • C语言| 函数参数传递指针
  • 【25-cv-05917】HSP律所代理Le Petit Prince 小王子商标维权案
  • MyBatis 动态 SQL 详解:灵活构建强大查询
  • 从 “金屋藏娇” 到 自然语言处理(NLP)
  • vue3 ElMessage提示语换行渲染
  • Java 微服务架构设计:服务拆分与服务发现的策略
  • 华为OD机试真题——二叉树中序遍历(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 解决 Go 中 `loadinternal: cannot find runtime/cgo` 错误
  • VSCode + GD32F407 构建烧录
  • Linux研学-入门命令
  • Hive在实际应用中,如何选择合适的JOIN优化策略?