VSCode 搭建 MySQL 源码调试环境

news/2025/2/13 14:52:10/文章来源:https://www.cnblogs.com/o-O-oO/p/18713158

在使用MySQL数据库的过程中,如果遇到一些复杂的问题,可以通过GDB进行调试,本篇将演示如何在Win 10环境基于VSCode搭建MySQL源码调试环境。

一、调试环境

本次调试需要用到的软件和环境为:

  • Red Hat Enterprise Linux release 8.10 (Ootpa)
  • MySQL 8.0.40
  • VSCode 1.96.4

二、编译安装MySQL源码调试版本

这里将在Linux环境编译安装MySQL源码,如何编译安装MySQL源码可参考《MySQL 8 源码编译安装和配置数据库》。

编译命令为

cmake .. -DCMAKE_INSTALL_PREFIX=/u01/export/mysql -DWITH_DEBUG=1 -DWITH_BOOST=/u01/mysql-8.0.40/boost/boost_1_77_0

初始化后的数据库信息为:

[root@sourcecode mysql]# ./bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.40-alen-debug Source distribution
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h'forhelp. Type '\c' to clear the current input statement.
mysql> select version();
+-------------------+
| version()         |
+-------------------+
| 8.0.40-alen-debug |
+-------------------+
1 row inset (0.00 sec)
mysql>

上面完成了MySQL的编译、安装和初始化,接下来将会配置VSCode进行MySQL源码的调试。

三、安装VSCode扩展

由于MySQL源码放在远程Linux服务器,故需要在本地安装Remote - SSH插件,通过该插件可以SSH远程到Linux服务器,同时还需要在远程Linux服务器安装C/C++,用于进行源码调试。

1、安装Remote - SSH插件,选中Extensions,在搜索框输入Remote-SSH进行搜索,然后选中并点击Install进行安装

2、安装完成,SSH连接到远程Linux服务器,选择Remote Explorer,点击+号,在输入框输入远程主机信息,点击回车

3、选择ssh配置文件位置

4、点击SSH,选择刚SSH的主机,点击+,进行连接到远程Linux服务器

5、选择Linux

6、选择Continue

7、输入连接远程Linux服务器的密码,并回车

8、SSH连接到远程Linux服务器,选中Extensions,在搜索框输入C/C++进行搜索,然后选中并点击Install进行安装

四、 调试MySQL源码

VSCode插件安装完成后,就可以进行MySQL源码的调试了。

1、打开源码所在目录,并输入密码确认

2、配置VSCode插件

[root@sourcecode export]# cd /u01/mysql-8.0.40/
[root@sourcecode mysql-8.0.40]# mkdir .vscode
[root@sourcecode mysql-8.0.40]# cd .vscode/
[root@sourcecode mysql-8.0.40]# vim launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "/u01/export/mysql/bin/mysqld",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}

3、启动GDB调试

4、登录Linux服务器,并连接MySQL

[root@sourcecode mysql]# ./bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.40-alen-debug Source distribution
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h'forhelp. Type '\c' to clear the current input statement.
mysql> select version();
+-------------------+
| version()         |
+-------------------+
| 8.0.40-alen-debug |
+-------------------+
1 row inset (0.00 sec)
mysql>

5、VSCode打断点,在上方输入框中输入待调试的源码,这里以sql_parse.cc为例,在2947行处理打上断点

6、MySQL端执行SQL,出现了暂停,那是因为程序运行到断点处了

7、程序运行到断点处暂停了,然后可看到运行时信息,可以看到变量、调用栈相关的信息

以上就是在VSCode搭建MySQL源码调试环境的完整步骤。

原创 AlenSZ Alen的数据库学习笔记

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

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

相关文章

MAC鼠标滚轮反向问题

找系统设置中 --》鼠标--〉关闭自然滚动设置博客园地址:https://www.cnblogs.com/lixiuming521125/

开发者福音!TinyEngine服务端Java版本正式开源

本次 TinyEngine 低代码引擎服务端 Java 版本代码的开源,让开发者能够深入了解 TinyEngine 低代码引擎的前后端运行机制。摘要:本次 TinyEngine 低代码引擎服务端 Java 版本代码的开源,让开发者能够深入了解 TinyEngine 低代码引擎的前后端运行机制。本文分享自华为云社区《…

ZeRO, ZeRO-Offload, ZeRO-Infinite, ZeRO++

目录概MotivationZeROZeRO-OffloadZeRO-InfiniteZeRO++代码Rajbhandari S., Rasley J., Ruwase O. and He Y. ZeRO: Memory optimizations toward training trillion parameter models. InSC, 2020.Ren J., Rajbhandari S., Aminabadi R. Y., Ruwase O., Yang S., Zhang M., Li…

IPD流程如何推动企业数字化转型

企业数字化转型已成为当下众多企业寻求突破与发展的关键战略方向。在这一进程中,集成产品开发(IPD)流程发挥着不可忽视的重要作用。IPD流程并非简单的产品开发流程,它涵盖了从产品战略规划、概念设计、详细设计、开发、测试到上市等一系列环节,是一个系统性的、端到端的流…

清华大学:《DeepSeek从入门到精通(第二版)》- 《DeepSeek赋能职场应用--从提示语技巧到多场景应用》 - PDF免费下载

全网疯传的《DeepSeek从入门到精通》的第二弹:《DeepSeek如何赋能职场应用:从提示语技巧到多场景应用》。下载地址:https://pdfs.top/book/DeepSeek如何赋能职场应用:从提示语技巧到多场景应用.html。《DeepSeek赋能职场应用--从提示语技巧到多场景应用》 - PDF免费下载 全…

万灵齐聚,山海相遇,万灵山海手游详细图文架设教程

本文讲解万灵山海手游架设教程,万灵齐聚,山海相遇!开启你的奇幻冒险之旅吧,希望你也喜欢这款游戏~前言 这次给大家带来的是准备了好久的精品仙侠神话回合制手游,万灵山海之万物归元,安卓苹果双端,绝对是难得的精品,游戏精美绝伦,基本无 BUG,快来试试吧~本文讲解万灵山…

组件快速查找工具思路分享

前言 在日常开发中,我们经常需要查找某个组件的字段被使用的情况。如果是代码引用,借助编译器可以轻松定位所有引用。但如果组件是直接挂载在GameObject上,就难以追踪其使用情况。为了解决这个问题,我开发了一个小工具,方便快速查找资源对组件的引用详情。 这个工具目前支…

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-14- iframe操作-下篇(详细教程)

1.简介 通过前边两篇的学习,想必大家已经对iframe有了一定的认识和了解,是不是感觉和Python语言中的差不了多少,大同小异,最多就是不同开发语言的一些语法差异。今天这一篇主要是对iframe做一个总结,主要从iframe的操作(输入框、点击等等)和定位两个方面进行总结。 2.if…

谷歌地图案例|利用 Google 地图平台提供美味又环保的餐食

Frichti是法国食品配送初创公司,提供健康美味实惠餐食,并注重环保。利用Google地图和大数据工具优化配送和减少浪费,实现30分钟内送达,提升顾客满意度和回头率。Frichti 的使命是在 30 分钟内送达健康、美味、实惠的餐食,并已筹集了 4600 多万美元的资金。其环保理念包括尽…

P3919 【模板】可持久化线段树 1(可持久化数组)(主席树)

这道题要注意空间不能开太小,还有我第一次是build函数忘写return了,我很奇怪,结构体数组开小后,有一个报错和tle,不知道tle是怎么来的#include<iostream> #include<set> #include<map> #include<algorithm> #include<vector> #include<c…

集装箱码头堆场计划智能优化系统

经纬恒润研发的堆场计划智能优化系统,以既有的码头操作系统为基础,建立与码头操作系统的数据接口,读取堆场结构、堆存状态、靠港船舶等信息,针对卸船、装船、集港、疏港等作业场景,围绕港口关注的箱区平衡、规避作业冲突、降低翻倒率、降低作业成本等核心指标,综合考虑各…

uniapp插件uni-upgrade-center-app升级在vue3中报错

记录使用npx @dcloudio/uvm@latest更新uniapp cli版本vite-plugin-uni报错的问题 在uniapp的vue3中,引入升级路径后提示:pnpm i @dcloudio/uni-uts-v1@3.0.0-3061420221215001 -D;用vscode终端安装后打包过程中一直提示cli升级,升级后安装对应的uts依赖包,真机模拟报错,提…