mysql-mysql源码本地调试

article/2025/8/3 1:53:26

前言

先进行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.hkcw.cn/article/XeRikFYURo.shtml

相关文章

华为OD机试真题——查找接口成功率最优时间段(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

硬件I2C和软件I2C的区别

硬件I2C和软件I2C的区别 一、硬件I2C 1、硬件IC的局限性及学习意义 尽管硬件IC外设在STM32等微控制器中提供了标准化的通信支持,但在实际应用中,其稳定性可能存在问题。例如,某些情况下外设会因事件检测异常而进入死锁状态,仅能…

PyCharm接入DeepSeek,实现高效AI编程

介绍本土AI工具DeepSeek如何结合PyCharm同样实现该功能。 一 DeepSeek API申请 首先进入DeepSeek官网:DeepSeek 官网 接着点击右上角的 “API 开放平台“ 然后点击API keys 创建好的API key,记得复制保存好 二 pycharm 接入deepseek 首先打开PyCh…

大模型-attention汇总解析之-MQA

MQA,即 “Multi-Query Attention”,是减少 KV Cache 的一次的一种大胆尝试,首次提出自《Fast Transformer Decoding: One Write-Head is All You Need》, 在2019 年减少 KV Cache 就已经是研究人员非常关注的一个课题了。MQA 的思…

华为OD机试真题——游戏分组王者荣耀(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

主流 AI IDE 之一的 Windsurf 使用入门

一、Windsurf 的常见入门界面 以上是本次展示Windsurf版本信息。 1.1 个人配置中心 1.2 AI 助手快捷设置 1.3 使用额度查看页面 1.4 智能助手 Windsurf 编辑器中 AI 助手名称 :Cascade 。打开 Cascade 窗口,开始聊天就可以了。方框里有写和聊两种状态锁…

大数据量下的数据修复与回写Spark on Hive 的大数据量主键冲突排查:COUNT(DISTINCT) 的陷阱

背景与问题概述 这一周(2025-05-26-2026-05-30)我在搞数据拟合修复优化的任务,有大量的数据需要进行数据处理及回写,大概一个表一天一分区有五六千万数据,大约一百多列的字段。 具体是这样的我先取档案&#x…

长尾关键词优化驱动SEO增长

内容概要 在搜索引擎优化领域,长尾关键词的精细化运营已成为突破流量瓶颈的核心突破口。相较于通用型关键词,长尾词凭借其低竞争度、高转化潜力的特性,能够精准捕捉用户搜索意图,为网站带来更具价值的自然流量。本文将从战略定位…

数字孪生驱动的智慧水务管网智能运维系统实践

引言:数字孪生赋能城市水务基础设施智能化转型 在新型智慧城市架构中,地下供水管网作为城市生命线工程,其数字化重构已成为市政基础设施现代化的核心命题。本文以某省会城市智慧水务示范项目为蓝本,系统阐述数字孪生技术在供水管…

数据资产——立法与实操指南

5月27日,数据资产一千零一夜,华东数交周二夜谈第三十三期圆满结束,上海国瓴律师事务所首席合伙人、管理委员会主席高慧、天册(上海)律师事务所律师邓亚军;数据宝网络科技有限公司数据资产研究院高级研究员王国辉共同围绕“数据资产…

放假带出门的充电宝买哪种好用耐用?倍思超能充35W了解一下!

端午节的到来和毕业季的临近,让很多人开始计划出游或长途旅行。而在旅途中,一款好用耐用的充电宝可以省不少事。今天,我们就来聊聊放假带出门的充电宝买哪种好用耐用,看看为什么倍思超能充35W更适合带出门~ 一、为什么需要一款好用…

ONLYOFFICE文档API:更强的安全功能

在数字化办公时代,文档的安全性与隐私保护已成为企业和个人用户的核心关切。如何确保信息在存储、传输及协作过程中的安全,是开发者与IT管理者亟需解决的问题。ONLYOFFICE作为一款功能强大的开源办公套件,不仅提供了高效的文档编辑与协作体验…

day14 leetcode-hot100-27(链表6)

21. 合并两个有序链表 - 力扣(LeetCode) 1. 暴力法 思路 创建一个空节点,用来组装这两个链表,谁小谁就是下一个节点。 知识 创建空节点:ListNode n1 new ListNode(-1); 具体代码 /*** Definition for singly-l…

DALI DT6与DALI DT8介绍

“DT”全称Device Type,是DALI-2 标准协议中的IEC 62386-102(即为Part 102)部分对不同类型的控制设备进行一个区分。不同的Device Type代表不同特性的控制设备,也代表了这种控制设备拥有的扩展的特性。 在DALI(数字可寻址照明接口&#xff09…

【自然语言处理】——基于与训练模型的方法【复习篇1】

本系列文章主要通过课本课后题目的方式来进行期末复习,很多知识分析的可能会比较浅,所以还请大佬们及时指正,我们可以在评论区讨论交流! 2.1 基于规则与基于机器学习的自然语言处理方法分别有哪些优缺点? 【先总结来讲…

Golang——2、基本数据类型和运算符

基本数据类型和运算符 1、基本数据类型1.1、整形1.2、浮点型1.3、布尔值1.4、字符串1.5、byte和rune类型1.6、修改字符串 2、基本数据类型之间的转换2.1、数值类型之间的相互转换2.2、其他类型转换成string类型2.3、string类型转换成数值类型 3、Golang中的运算符3.1、算数运算…

服务器如何配置防火墙管理端口访问?

配置服务器防火墙来管理端口访问,是保障云服务器安全的核心步骤。下面我将根据你使用的不同操作系统(Linux: Ubuntu/Debian/CentOS;Windows Server)介绍常用防火墙配置方法。 ✅ 一、Linux 防火墙配置(UFW / firewalld…

4.2.2 Spark SQL 默认数据源

在本实战概述中,我们探讨了如何在 Spark SQL 中使用 Parquet 格式作为默认数据源。首先,我们了解了 Parquet 文件的存储特性,包括其二进制存储方式和内嵌的 Schema 信息。接着,通过一系列命令,我们演示了如何在 HDFS 上…

4.0/Q2,GBD数据库最新文章解读

文章题目:Global burden of Type 2 Diabetes Mellitus attributable to dietary risks in elderly adults: insights from the Global Burden of Disease study 2021 DOI:10.3389/fnut.2025.1557923 中文标题:老年人饮食风险导致的 2 型糖尿病…

mobile app 工具简要对比

支持mobile app UI自动化测试的工具比较多,其中使用时间很长,应用很广泛的有appium,前面博客也详细介绍过appium webdriverio工具的特点,此篇博客将介绍之前项目实际使用或者调研过的mobile app ui工具,最后再对多个工…