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属性
好的,结束
相关文章:

mysql-mysql源码本地调试
前言 先进行mysql源码本地编译:mysql源码本地编译 1.本地调试 这里以macbook为例 1.使用vscode打开mysql源码 2.创建basedir目录、数据目录、配置文件目录、配置文件 cd /Users/test/ mkdir mysqldir //创建数据目录和配置目录 cd mysqldir mkdir conf data …...

PCIe— Legacy PCI
Legacy Model 该器件通过将其引脚置位到控制器来生成中断。 在较旧的系统中,这个控制 器通常是Intel 8259 PIC,有15个IRQ输入和一个INTR输出。 然后,PIC将断 言INTR以通知CPU一个或多个中断正在挂起。 一旦CPU检测到INTR的断言…...

PostgreSQL数据库配置SSL操作说明书
背景: 因为postgresql或者mysql目前通过docker安装,只需要输入主机IP、用户名、密码即可访问成功,这样其实是不安全的,可能会通过一些手段获取到用户名密码导致数据被窃取。而ES、kafka等也是通过用户名/密码方式连接,…...
MySQL 的 super_read_only 和 read_only 参数
MySQL 的 super_read_only 和 read_only 参数 一、参数基本概念 1. read_only 参数 作用:控制普通用户是否只能读取数据影响范围:所有非SUPER权限的用户默认值:OFF(可读写) 2. super_read_only 参数 作用…...

低碳理念在道路工程中的应用-预制路面
一、引子 在上一篇文章里,给大家介绍了预制基层的应用,有人提出,既然基层能够预制,那么,道路面层能不能预制呢,有没有相关的研究成果和应用实例呢?答案是肯定的,在本篇文章中&#x…...

12-后端Web实战(登录认证)
在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。 这是不安全的,所以我们今天的主题就是登录认证。最终要实现的效果是&#…...
TIDB创建索引失败 mkdir /tmp/tidb/tmp_ddl-4000/1370: no such file or directory.
TIDB创建索引失败:解决“mkdir /tmp/tidb/tmp_ddl-4000/1370: no such file or directory”问题 在使用 TIDB 数据库时,我们有时会遇到创建索引失败的问题。常见的错误信息为: mkdir /tmp/tidb/tmp_ddl-4000/1370: no such file or directo…...
Redis 插入中文乱码键
Java 代码: Bean// 静态代理模式: Redis 客户端代理类增强public StringRedisTemplateProxy stringRedisTemplateProxy(RedisKeySerializer redisKeySerializer,StringRedisTemplate stringRedisTemplate,RedissonClient redissonClient) {stringRedisTemplate.setK…...
Mac OS 使用说明
Mac 的启动组合键 了解可通过在启动时按住一个或多个按键来访问的 Mac 功能和工具。 若要使用这些组合键中的任何一个,请在按下电源按钮以开启 Mac 后或在 Mac 开始重新启动后,立即按住相应按键。请一直按住,直至电脑出现对应的行为。 !!!上…...

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

234. Palindrome Linked List
目录 一、题目描述 方法一、使用栈 方法二、将链表全部结点值复制到数组,再用双指针法 方法三、递归法逆序遍历链表 方法四、快慢指针反转链表 一、题目描述 234. Palindrome Linked List 方法一、使用栈 需要遍历两次。时间复杂度O(n),空间复杂度…...
广州邮科高频开关电源:以创新科技赋能通信能源绿色未来
在数字化浪潮席卷全球的当下,通信网络作为信息社会的基石,其稳定运行对电源系统的可靠性、效率及智能化水平提出了更高要求。作为国内通信电源领域的领军企业,广州邮科凭借其自主研发的高频开关电源技术,以高效节能、智能管控、绿…...
day41 python图像识别任务
目录 一、数据预处理:为模型打下坚实基础 二、模型构建:多层感知机的实现 三、训练过程:迭代优化与性能评估 四、测试结果:模型性能的最终检验 五、总结与展望 在深度学习的旅程中,多层感知机(MLP&…...

无人机报警器探测模块技术解析!
一、运行方式 1. 频谱监测与信号识别 全频段扫描:模块实时扫描900MHz、1.5GHz、2.4GHz、5.8GHz等无人机常用频段,覆盖遥控、图传及GPS导航信号。 多路分集技术:采用多传感器阵列,通过信号加权合并提升信噪比,…...
Docker 替换宿主与容器的映射端口和文件路径
在使用 Docker 容器化应用程序时,经常需要将宿主机的端口和文件路径映射到容器中,以便在本地访问容器中的服务和数据。本文将详细介绍如何替换和配置 Docker 容器的端口和文件路径映射。 1. 端口映射 端口映射用于将宿主机的端口转发到容器中的端口&am…...
我的3种AI写作节奏搭配模型,适合不同类型写作者
—不用内耗地高效写完一篇内容,原来可以这样搭配AI ✍️ 开场:为什么要“搭配节奏”写作? 很多人以为用AI写作,就是丢一句提示词,然后“等它写完”。 但你有没有遇到这些情况: AI写得很快,学境…...

Bonjour
Bonjour 是苹果的一套零配置网络协议,用于发现局域网内的其他设备并进行通信,比如发现打印机、手机、电视等。 一句话:发现局域网其他设备和让其他设备发现。 Bonjour 可以完成的工作 IP 获取名称解析搜索服务 实际应用场景示例࿰…...

华为云Flexus+DeepSeek征文 | 基于Dify和DeepSeek-R1开发企业级AI Agent全流程指南
作者简介 我是摘星,一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型,将实际使用经验分享给大家,希望能帮助开发者快速掌握华为云AI服务的核心能力。 目录 1. 前言 2. 环境准备 2.1 华为云资源准备 2.1 实…...

HarmonyOS-ArkUI固定样式弹窗(1)
固定样式弹窗指的就是ArkUI中为我们提供的一些具备界面模板性质的弹窗。样式是固定的,我们可以决定在这些模板里输入什么样的内容。常见的有,警告弹窗, 列表选择弹窗, 选择器弹窗,对话框,操作菜单。 下图是本文中要讲到的基类固定样式弹窗,其中选择器弹窗没有包含在内,…...

痉挛性斜颈相关内容说明
一、颈部姿态的异常偏移 痉挛性斜颈会打破颈部原本自然笔直的状态,让颈部像被无形的力量牵引,出现不自主的歪斜、扭转。它就像打乱了颈部原本和谐的 “平衡游戏”,使得颈部姿态偏离正常,影响日常的体态与活动。 二、容易察觉…...
C语言| 函数参数传递指针
C语言| 拷贝传递(指针控制内存单元)-CSDN博客 【函数参数传指针和传数据的区别】 如果希望在另外一个函数中修改本函数中变量的值,那么在调用函数时只能传递该变量的地址。 1 普通变量,传递它的地址,可以直接操作该变量的内存空间。 举例…...

【25-cv-05917】HSP律所代理Le Petit Prince 小王子商标维权案
Le Petit Prince 小王子 案件号:25-cv-05917 立案时间:2025年5月28日 原告:SOCIETE POUR LOEUVRE ET LA MEMOIRE DANTOINE DE SAINT EXUPERY - SUCCESSION DE SAINT EXUPERY-DAGAY 代理律所:HSP 原告介绍 《小王子》&#x…...
MyBatis 动态 SQL 详解:灵活构建强大查询
MyBatis 的动态 SQL 功能是其最强大的特性之一,它允许开发者根据不同条件动态生成 SQL 语句,极大地提高了 SQL 的灵活性和复用性。本文将深入探讨 MyBatis 的动态 SQL 功能,包括 OGNL 表达式的使用以及各种动态 SQL 元素(如 if、c…...
从 “金屋藏娇” 到 自然语言处理(NLP)
文章目录 从两个问题理解自然语言处理(NLP)1、汉武帝喜欢阿娇吗1. 政治联姻的背景2. 早期情感与后期疏远3. 历史评价的复杂性4. 现代视角结论 2、刘彻和淮南王关系一、背景:诸侯王与中央的矛盾二、刘彻与刘安的互动三、深层原因与历史评价结论…...

vue3 ElMessage提示语换行渲染
在 ElMessage.error 中使用换行符 \n 并不会实现换行,因为 ElMessage 默认会将字符串中的换行符忽略。要实现换行显示,可以使用 HTML 标签 <br> 并结合 ElMessage 的 dangerouslyUseHTMLString 选项。以下是实现换行提示的代码示例: i…...

Java 微服务架构设计:服务拆分与服务发现的策略
Java 微服务架构设计:服务拆分与服务发现的策略 微服务架构作为一种热门的软件架构风格,在 Java 领域有着广泛的应用。它通过将系统拆分为一组小型服务来实现更灵活、可扩展的系统设计。在微服务架构中,服务拆分和服务发现是两个关键环节。本…...

华为OD机试真题——二叉树中序遍历(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《二叉树中序遍历》: 目录 …...
解决 Go 中 `loadinternal: cannot find runtime/cgo` 错误
在 Go 开发中,loadinternal: cannot find runtime/cgo 是一个相对不常见但可能令人困惑的错误。这个错误通常与 CGO 的使用和配置有关。本文将探讨这个错误的成因,并提供解决方案,帮助你在未来的开发中避免类似问题。 错误背景 在 Go 项目中…...

VSCode + GD32F407 构建烧录
前言 最近调试一块 GD32F407VET6(168Mhz,8Mhz晶振) 板子时,踩了一些“启动失败”的坑。本以为是时钟配置有误,最后发现是链接脚本(.ld 文件)没有配置好,导致程序根本没能正常执行 ma…...

Linux研学-入门命令
一 目录介绍 1 介绍 Linux与Windows在目录结构组织上差异显著:Linux采用树型目录结构,以单一根目录/为起点,所有文件和子目录由此向下延伸形成层级体系,功能明确的目录各司其职,使文件系统层次清晰、逻辑连贯…...