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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 东方博宜24年8月-C组 - 屋顶
  • C++ | Leetcode C++题解之第328题奇偶链表
  • unity草体渲染方案 GPU Instaning
  • 数据结构(学习)2024.8.6
  • 数据库原理之多表查询——使用Mysql进行内连接和外连接
  • 【学习方法】高效学习因素 ② ( 学习动机 | 内在学习动机 | 外在学习动机 | 外在学习动机的调整方向 | 保护学习兴趣 | 高考竞争分析 )
  • 使用MailKit在.NET Core中收发邮件的完整示例
  • 『 Linux 』线程池与 POSIX 线程的封装编码实现
  • 无人机PX4飞控 | 电源系统详解与相关代码
  • Flask+LayUI开发手记(一):LayUI表格的前端数据分页展现
  • 高级java每日一道面试题-2024年8月06日-web篇-cookie,session,token有什么区别?
  • 【Material-UI】Autocomplete中的禁用选项:Disabled options
  • 基于Python的脑电图(EEG)信号分析(5)
  • Golang | Leetcode Golang题解之第312题戳气球
  • python 实现粒子群算法
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 2019.2.20 c++ 知识梳理
  • CentOS 7 修改主机名
  • ES6简单总结(搭配简单的讲解和小案例)
  • java 多线程基础, 我觉得还是有必要看看的
  • Joomla 2.x, 3.x useful code cheatsheet
  • log4j2输出到kafka
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 前端学习笔记之观察者模式
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 系统认识JavaScript正则表达式
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 优秀架构师必须掌握的架构思维
  • HanLP分词命名实体提取详解
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • ( 10 )MySQL中的外键
  • (2020)Java后端开发----(面试题和笔试题)
  • (3)llvm ir转换过程
  • (6)设计一个TimeMap
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (SpringBoot)第七章:SpringBoot日志文件
  • (WSI分类)WSI分类文献小综述 2024
  • (转)fock函数详解
  • (转)一些感悟
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .apk文件,IIS不支持下载解决
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .Net Core 生成管理员权限的应用程序
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET 设计模式初探
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • :如何用SQL脚本保存存储过程返回的结果集
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [ IO.File ] FileSystemWatcher