mysql源码编译启动debug

对于没有C语言基础的同学来说,想看看源码,在搞定编辑器做debug的时候就被劝退了,发生点啥了,完全看不懂,不知道从哪里入手去做debug;我为了看看 mysql 的 insert buffer 到底存的是索引页还是数据页,花了几天时间搞明白,怎么用 clion 做debug调试。不懂的可以跟着一起动手搞起来。

macOS 12.4

c/c++ 编译器是 clang 13.0.0

Clion的版本是 2023.3.5

mysql 的源码版本 5.7.36

按照下图配置CMakeCMake这里的作用是根据 CMakeLists.txt来生成标准的构建文件Makefile
在这里插入图片描述

-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/Users/yuanjy/work_fz/boost -DCMAKE_BUILD_TYPE=Debug

源码是 mysql-server-mysql-5.7.36 版本,去 github 上下载。

这里要把源码中的 VERSION 改成 VERSION_1;编译的时候有些文件引用 #include ,会引用这里,导致报错;
在这里插入图片描述

然后再修改 cmake/mysql_version.cmake 文件,修改引用的 VERSION 文件名;
在这里插入图片描述

如果已经存在 cmake-build-debug (自动构建生成的),把它删了,再重新构建一下
在这里插入图片描述

构建完成之后,在 1 这个位置应该出来了很多CMake Application;展开 2 这个位置,找到 mysqld;点击 debug 的按钮,他就会自动编译了,编译完成会启动mysqld,mysqld 编译后产生的位置在 cmake-build-debug/sql 下面
在这里插入图片描述

这个时候应该会启动失败,没有对应的 data 目录,看看打印的报错日志,看看指定的 data 目录在哪,创建建一个这个目录,再执行 mysqld --initialize,最后一行有初始密码;用这个密码就可以登录 mysql 了

然后找到你要看的位置打个断点,就可以开始调试代码了
在这里插入图片描述

希望你能成功启动debug

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/392941.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ViT和SwinTransformer详解

ViT是Google brain发表于ICLR21上的工作,开创性将transformer用在vision领域,且图像识别性能超CNN,至今引用3.8w;原文:https://arxiv.org/pdf/2010.11929 SwinTransformer是微软亚洲研究院发表于ICCV21上,…

双回路校园智能电表是什么?什么叫双回路校园智能电表?

在智慧校园的建设浪潮中,双回路校园智能电表作为一种创新的能源计量与管理解决方案,正逐渐成为校园电力系统改造与升级的关键要素。本文旨在深入探讨双回路校园智能电表的概念、工作原理、核心优势及其在校园能源管理中的应用实践。 一、定义与工作原理…

Harbor 仓库一键安装

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

一文理清生产管理的“4管”和“8理”!

一提到生产管理,很多人的第一反应可能是车间里忙碌的身影、流水线上飞速运转的机器,还有一张张密密麻麻的生产计划表。但实际上,生产管理远不止于此。 “科学管理之父”弗雷德里克温斯洛泰勒认为:管理就是确切地知道你要别人干什…

CompletableFuture详解

CompletableFuture详解 学习链接:https://juejin.cn/post/7124124854747398175?searchId20240806151438B643DF2AAD2FC5E6F11E 一、CompletableFuture简介 在JAVA8开始引入了全新的CompletableFuture类,它是Future接口的一个实现类。也就是在Future接口的基础上&a…

计算机网络复习总结

第一章 计算机网络体系结构 1、计算机网络的概念组成和功能 (1)什么是计算机网络? 计算机网络是将一个分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。…

UI自动化常见精华面试题整理

selenium的运行原理 1、基于Web端如何做自动化测试,谈谈你的思路和方向? Web端的自动化测试,基本就是模拟手工测试人员来做功能测试。用机器的自动执行代替人的操作。web端呈现的产品有两个方向可以做自动化测试:接口层和界面操作…

虚拟机Windows10系统安装QEMU

文章目录 1. QEMU安装1.1 安装准备1.1.1 安装平台1.1.2 软件下载 1.2 安装QEMU1.2.1 找到下载的QEMU软件,双击开始安装1.2.2 设置语言1.2.3 安装向导,点击 Next1.2.4 点击“I Agree”1.2.5 点击Next1.2.6 设置软件安装位置1.2.7 点击 finish1.2.8 编辑系…

odoo from样式更新

.xodoo_form {.o_form_sheet {padding-bottom: 0 !important;border-style: solid !important;border-color: white;}.o_inner_group {/* 线框的样式 *//*--line-box-border: 1px solid #666;*//*box-shadow: 0 1px 0 #e6e6e6;*/margin: 0;}.grid {display: grid;gap: 0;}.row …

FFmpeg源码:av_reduce函数分析

AVRational结构体和其相关的函数分析: FFmpeg有理数相关的源码:AVRational结构体和其相关的函数分析 FFmpeg源码:av_reduce函数分析 一、av_reduce函数的声明 av_reduce函数声明在FFmpeg源码(本文演示用的FFmpeg源码版本为7.0…

【计算机操作系统】同步与互斥的基本概念

同步与互斥的基本概念 进程同步的概念 知识点回顾:进程具有异步性,异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进 并发性带来了异步性,有时需要通过进程同步解决这种异步问题,有的进程之间需要…

JVM的面试考点

JVM内存划分 1.堆,整个内存区域中,内存最大的区域,放的都是new出来的对象,new类名这一部分存放在堆中, 而这个scanner是一个临时变量,这个scanner的地址存放在栈上,scanner里面存放的值是new类名这个对象的首地址 2.栈,分为JVM虚拟机栈(Java代码),和本地方法栈(C),这个栈包含了…

如何提前预防网络威胁

一、引言 随着信息技术的迅猛进步,网络安全议题愈发凸显,成为社会各界不可忽视的重大挑战。近年来,一系列网络安全事件的爆发,如同惊雷般震撼着个人、企业及国家的安全防线,揭示了信息安全保护的紧迫性与复杂性。每一…

2024年第五届“华数杯”全国大学生数学建模竞赛C题-老外游中国(代码+成品论文+讲解)

目录 💕一、问题重述💕 🐸问题 1🐸 🐸问题 2🐸 🐸问题 3🐸 🐸问题 4🐸 🐸问题 5🐸 💕二、解题思路💕 …

图解RocketMQ之如何实现顺序消息

大家好,我是苍何。 顺序消息是业务中常用的功能之一,而 RocketMQ 默认发送的事普通无序的消息,那该如何发送顺序消息呢? 要保证消息的顺序,要从生产端到 broker 消息存储,再到消费消息都要保证链路的顺序…

【C++】二维数组 数组名

二维数组名用途 1、查看所占内存空间 2、查看二维数组首地址 针对第一种用途&#xff0c;还可以计算数组有多少行、多少列、多少元素 针对第二种用途&#xff0c;数组元素、行数、列数都是连续的&#xff0c;且相差地址是有规律的 下面是一个实例 #include<iostream&g…

Spring源码解析(29)之AOP动态代理对象创建过程分析

一、前言 在上一节中我们已经介绍了在createBean过程中去执行AspectJAutoProxyCreator的after方法&#xff0c;然后去获取当前bean适配的advisor&#xff0c;如果还不熟悉的可以去看下之前的博客&#xff0c;接下来我们分析Spring AOP是如何创建代理对象的&#xff0c;在此之前…

【目标检测类】YOLOv5网络模型结构基本原理讲解

1. 基本概念 YOLOv5模型结构主要包括以下组成部分&#xff1a;‌ 输入端&#xff1a;‌YOLOv5的输入端采用了多种技术来增强模型的性能&#xff0c;‌包括Mosaic数据增强、‌自适应锚框计算、‌以及自适应图片缩放。‌这些技术有助于提高模型的泛化能力和适应不同尺寸的输入图…

MySQL基础操作全攻略:增删改查实用指南(中)

本节目标&#xff1a; NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列&#xff08;或两个列多个列的结合&#xff09;有唯一标 识&am…

【C++】模拟实现stack

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 ​ 目录 一.了解项目功能 &#x1f4cc;了解stack官方标准 &#x1f4cc;了解模拟实现stack 二.逐步实现项目功能模块及其逻辑详解 &#x1f4cc;实现stack成员变量 &…