gdb 调试mysql

gdb 调试mysql,这里调试 用户登陆报错


窗口1 用gdb 挂住 my_error 函数
[root@node1 ~]# ps -ef|grep mysql 
root      4688     1  0 Mar22 ?        00:00:00 /bin/sh /usr/local/mysql//bin/mysqld_safe --datadir=/data/mysql/mysql3306/data --pid-file=/data/mysql/mysql3306/data/node1.pid
mysql     5814  4688  0 Mar22 ?        00:15:23 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql/mysql3306/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql/mysql3306/logs/error.log --open-files-limit=65536 --pid-file=/data/mysql/mysql3306/data/node1.pid --socket=/tmp/mysql3306.sock --port=3306
root     28275 27829  0 23:33 pts/4    00:00:00 grep --color=auto mysql[root@node1 ~]# gdb -p 5814--- 挂住my_error函数
(gdb) b my_error
Breakpoint 1 at 0x20729c4
(gdb) bt
#0  0x00007f1813fc1ddd in poll () from /lib64/libc.so.6
#1  0x0000000001059098 in Mysqld_socket_listener::listen_for_connection_event() ()
#2  0x0000000000e28151 in mysqld_main(int, char**) ()
#3  0x00007f1813ef0555 in __libc_start_main () from /lib64/libc.so.6
#4  0x0000000000e0c185 in _start ()窗口2 模拟登陆报错 ,卡住
[root@node1 ~]# mysql -uroot -perror -S /tmp/mysql3306.sock 
mysql: [Warning] Using a password on the command line interface can be insecure.窗口1 执行 c 继续往下走
(gdb) c
Continuing.
[Switching to Thread 0x7f1798288700 (LWP 1646)]Breakpoint 1, 0x00000000020729c4 in my_error(int, int, ...) ()
(gdb) info threadsId   Target Id         Frame 42   Thread 0x7f1805356700 (LWP 5822) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.141   Thread 0x7f1805b57700 (LWP 5823) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.140   Thread 0x7f1806358700 (LWP 5824) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.139   Thread 0x7f1806b59700 (LWP 5825) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.138   Thread 0x7f17ad3a2700 (LWP 5826) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.137   Thread 0x7f17acba1700 (LWP 5827) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.136   Thread 0x7f17ac3a0700 (LWP 5828) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.135   Thread 0x7f17abb9f700 (LWP 5829) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.134   Thread 0x7f17ab39e700 (LWP 5830) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.133   Thread 0x7f17aab9d700 (LWP 5831) "mysqld" 0x00007f1814cc8644 in __io_getevents_0_4 () from /lib64/libaio.so.132   Thread 0x7f17aa39c700 (LWP 5832) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.031   Thread 0x7f17a9b9b700 (LWP 5833) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.030   Thread 0x7f17a939a700 (LWP 5834) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.029   Thread 0x7f17a8b99700 (LWP 5835) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.028   Thread 0x7f179f396700 (LWP 5836) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.027   Thread 0x7f179eb95700 (LWP 5837) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.026   Thread 0x7f179e394700 (LWP 5838) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.025   Thread 0x7f179db93700 (LWP 5839) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.024   Thread 0x7f179d392700 (LWP 5840) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.023   Thread 0x7f179cb91700 (LWP 5841) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.022   Thread 0x7f179c390700 (LWP 5842) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.021   Thread 0x7f179bb8f700 (LWP 5843) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.020   Thread 0x7f179b38e700 (LWP 5845) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.019   Thread 0x7f179ab8d700 (LWP 5846) "mysqld" 0x00007f1815eeee9d in nanosleep () from /lib64/libpthread.so.018   Thread 0x7f179a38c700 (LWP 5847) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.017   Thread 0x7f1799b8b700 (LWP 5848) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.016   Thread 0x7f180405f700 (LWP 5849) "xpl_worker0" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.015   Thread 0x7f17ae20b700 (LWP 5850) "xpl_worker1" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.014   Thread 0x7f17ae1c4700 (LWP 5851) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.013   Thread 0x7f1807e27700 (LWP 5855) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.012   Thread 0x7f179938a700 (LWP 5856) "mysqld" 0x00007f1815eebde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.011   Thread 0x7f1798b89700 (LWP 5857) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.010   Thread 0x7f178bfff700 (LWP 5858) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.09    Thread 0x7f178b7fe700 (LWP 5859) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.08    Thread 0x7f178affd700 (LWP 5860) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
---Type <return> to continue, or q <return> to quit--- 7    Thread 0x7f17ae17d700 (LWP 5861) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.06    Thread 0x7f17ae135700 (LWP 5862) "mysqld" 0x00007f1813f0558a in sigwaitinfo () from /lib64/libc.so.65    Thread 0x7f17ae0ed700 (LWP 5863) "mysqld" 0x00007f1813fcd0e3 in epoll_wait () from /lib64/libc.so.64    Thread 0x7f178a7fc700 (LWP 5865) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.03    Thread 0x7f17ae05f700 (LWP 5951) "mysqld" 0x00007f1815eeba35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
* 2    Thread 0x7f1798288700 (LWP 1646) "mysqld" 0x00000000020729c4 in my_error(int, int, ...) ()1    Thread 0x7f1816309840 (LWP 5814) "mysqld" 0x00007f1813fc1ddd in poll () from /lib64/libc.so.6
(gdb) 
(gdb) 这里 2 带星号的就是my_error 函数了############ gdb 用法1. 安装 gdb 和带调试符号的 MySQL
安装 gdb
如果你的系统没有 gdb,先安装它:yum install -y gdb
或者,如果你使用 dnf:dnf install -y gdb
确保 MySQL 具有调试符号2. 启动 MySQL 并附加 gdb
2.1 启动 MySQL
如果 MySQL 还未运行,可以先启动它:systemctl start mysqld
然后找到 mysqld 进程 ID:ps aux | grep mysqld
例如:mysql    1234  2.3  0.5 /usr/sbin/mysqld
记住 1234(进程 ID)。2.2 附加 gdbgdb -p 1234
如果 gdb 报错 ptrace: Operation not permitted,请执行:echo 0 > /proc/sys/kernel/yama/ptrace_scope
3. 调试 MySQL
3.1 设置断点(gdb) b sql_parse.cc:100   # 在 sql_parse.cc 第 100 行设置断点
(gdb) b my_function_name    # 在特定函数上设置断点
3.2 继续运行(gdb) c  # 继续执行
3.3 打印变量值(gdb) p some_variable
3.4 查看调用栈(gdb) bt
3.5 单步执行(gdb) n  # 执行下一行
(gdb) s  # 进入函数
3.6 解除断点(gdb) delete 1
3.7 退出 gdb(gdb) q
4. 在 MySQL 运行 SQL 语句进行调试
如果你想调试某个 SQL 语句的执行过程:附加到 mysqld 进程。在 dispatch_command 或 mysql_parse 处设置断点:(gdb) b dispatch_command
在 MySQL 客户端执行 SQL 语句:mysql -u root -p -e "SELECT * FROM test;"
gdb 会在 dispatch_command 处暂停,你可以查看调用栈:(gdb) bt
5. 使用 gdb 运行 mysqld
你也可以直接用 gdb 启动 MySQL:gdb --args /usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=mysql
然后在 gdb 中输入:(gdb) run
这样,你可以在 MySQL 进程启动时调试它的执行。结论:
使用 gdb 调试 MySQL 主要包括:确保 MySQL 具有调试符号。使用 gdb -p 附加到 mysqld 进程。设置断点、查看变量、执行 SQL 语句进行调试。也可以直接用 gdb 启动 mysqld 以便深入分析

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

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

相关文章

数据化管理(一)---什么是数据化管理

目录 一、什么是数据化管理1.1 “聪明”的销售人员1.2 数据化管理的概念1.3 数据化管理的意义1.4 数据化管理的四个层次1.4.1 业务指导管理1.4.2 营运指导管理1.4.3 经营策略管理1.4.4 战略规划管理 1.5 数据化管理流程图1.5.1 分析需求1.5.2 收集数据1.5.3 整理数据1.5.4 分析…

笔记本电脑更换主板后出现2203:System configuration is invalid,以及2201、2202系统错误的解决

笔记本电脑更换主板后启动出现2203:System configuration is invalid,以及2201、2202系统错误的解决 自用的一台ThinkpadT490笔记本电脑 ,由于主板故障,不得不更换主板,通过某宝购置主板后进行了更换。 具体拆卸笔记本可搜索网络视频教程。 注意: 在更换主板时,注意先拍…

微型导轨和普通导轨有哪些区别?

微型导轨和普通导轨都是常用的工业机械传动装置&#xff0c;目前&#xff0c;市场上有各种各样的导轨产品。那么微型导轨和普通导轨有哪些区别呢&#xff1f; 1、尺寸&#xff1a;微型导轨尺寸较小&#xff0c;滑座宽度最小可达 8MM&#xff0c;长度最小可达 11MM 左右&#xf…

GMP调度模型

Golang调度器的由来 1.协程提高CPU利用率 线程分为用户态和内核态&#xff1b;协程其实就是用户态的线程。 协程和线程的映射关系 N:1关系 N个协程绑定一个线程&#xff0c;优点就是协程在用户态线程即完成切换&#xff0c;不会陷入到内核态&#xff0c;这种切换非常轻量快速…

jetson orin nano super AI模型部署之路(三)stable diffusion部署

先看一下部署后的界面和生成的图片。 在jetson orin nano super上部署stable diffusion比较简单&#xff0c;有现成的docker image和代码可用。 docker image拉取 使用的docker image是dustynv/stable-diffusion-webui&#xff0c;对于jetson orin nano super的jetpack6.2来说…

react如何引用(按需加载)百度地图,并结合and组件化封装

1.技术选项: vitereactantdesign load-script 2.实现思路&#xff1a; 1.按需加载如何实现? 要实现按需加载就不能直接在项目的入口文件这种地方去通过script标签引入&#xff0c;这里使用load-script封装了一个加载百度地图的Bmap.js方法,实现动态的插入script脚本。 根…

Java虚拟机(JVM)详解

Java虚拟机&#xff08;JVM&#xff09;详解 JVM内存结构垃圾收集算法标记-清除 算法复制 算法标记 - 整理 算法分代收集算法 类加载类加载过程加载器类型双亲委派模型 Java对象如何判断存活引用计数法可达性分析法 方法分派模型静态分派动态分派 JVM内存结构 方法区&#xff1…

AI知识补全(八):多模态大模型是什么?

名人说&#xff1a;人生如逆旅&#xff0c;我亦是行人。 ——苏轼《临江仙送钱穆父》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;AI知识补全&#xff08;七&#xff09;&#xff1a;AI Agent 智能…

从 Word 到 HTML:使用 Aspose.Words 轻松实现 Word 文档的高保真转换

从 Word 到 HTML&#xff1a;使用 Aspose.Words 轻松实现 Word 文档的高保真转换 前言一、环境准备二、核心代码实现1. 将 Word 转换为 HTML 文件流2. 优化超链接样式 三、测试效果四、总结 前言 在日常开发中&#xff0c;我们经常需要将 Word 文档转换为 HTML&#xff0c;用于…

观察者模式:解耦对象间的依赖关系

观察者模式&#xff1a;解耦对象间的依赖关系 JDK 中曾直接提供对观察者模式的支持&#xff0c;但因其设计局限性&#xff0c;现已被标记为“过时”&#xff08;Deprecated&#xff09;。不过&#xff0c;观察者模式的思想在 JDK 的事件处理、spring框架等仍有广泛应用。下面我…

人工智能之数学基础:矩阵的相似变换的本质是什么?

本文重点 矩阵的相似变换是线性代数中一个至关重要的概念&#xff0c;它揭示了矩阵之间的一种特殊关系。并提供了通过可逆矩阵将一个矩阵转化为另一个矩阵的方法&#xff0c;&#xff0c;同时保持矩阵的某些本质特征不变。但是&#xff0c;你有没有想过&#xff0c;矩阵相似变…

C++中ShellExecute函数使用方法说明,如果一开始参数为隐藏,后面还能再显示出来吗

文章目录 一、ShellExecute基础用法函数原型关键参数 nShowCmd示例代码&#xff1a;启动程序并隐藏窗口 二、隐藏后能否重新显示窗口直接答案 三、实现隐藏后显示窗口的步骤1. 获取目标窗口句柄2. 显示窗口 四、完整流程示例五、注意事项六、总结 在C中使用ShellExecute函数时&…

[ 工具使用指南 ] | Visual Studio 2019 调试

目录 什么是BUG 启动调试 逐过程&#xff0c;逐语句的区别&#xff1f; 打断点 条件断点 小结 之前推荐刚刚学习C/C的小伙伴使用 Visual Studio 2019 这款工具来写代码。这篇博客就来简单介绍一下Visual Studio 2019 的调试方法~ 什么是BUG 在最开始的晶体管的计算机的…

基于javaweb的SpringBoot水果生鲜商城系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

【深度学习】GAN生成对抗网络:原理、应用与发展

GAN生成对抗网络&#xff1a;原理、应用与发展 文章目录 GAN生成对抗网络&#xff1a;原理、应用与发展1. 引言2. GAN的基本原理2.1 核心思想2.2 数学表达2.3 训练过程 3. GAN的主要变体3.1 DCGAN (Deep Convolutional GAN)3.2 CGAN (Conditional GAN)3.3 CycleGAN3.4 StyleGAN…

群体智能优化算法-流向算法(Flow Direction Algorithm, FDA,含Matlab源代码)

摘要 流向算法&#xff08;Flow Direction Algorithm, FDA&#xff09;是一种受流体动力学中流向传播机制启发的新型元启发式优化算法。FDA 通过模拟“信息流”在搜索空间中的扩散方向&#xff0c;并结合局部邻域搜索机制&#xff0c;引导解向全局最优解逼近。该算法具有良好的…

自学-python-基础-注释、数据类型、运算符、判断、循环

这里写自定义目录标题 1. Python简介2. 为什么选择Python&#xff1f;3. 安装Python4. Python的第一个程序5. Python的基本概念6. Python的控制流- 条件语句- 循环 7. Python的函数8. 注释9. 学习资源 从认识Python开始&#xff0c;首先了解它的特点和用途是一个很好的起点。让…

1.4-蜜罐\堡垒机\API接口

1.4-蜜罐\堡垒机\API接口 蜜罐&#xff1a;用来钓鱼或诱惑测试人员的防护系统 bash <(curl -sS -L https://hfish.net/webinstall.sh) # 安装HFISH蜜罐堡垒机&#xff1a; 运维用的&#xff0c;统一管理运维平台;拿下堡垒机就很有可能等于拿下了多个平台 jumpServer一键安…

右值和右值引用【C++】

文章目录 左值引用和右值引用简单介绍左值&#xff1a;右值&#xff1a;左值引用&#xff0c;引用右值右值引用&#xff0c;引用左值为什么强制类型转换之后&#xff0c;右值引用就可以引用左值了呢&#xff1f; 右值引用的作用举个例子理解移动构造和移动赋值的作用&#xff1…

罗杰斯特回归

定义 逻辑回归其实就是原来的线性回归加了激活函数&#xff0c;这个函数其实就是sigmoid函数&#xff0c;把一个回归的连续数值压缩到了0到1的空间&#xff0c;其实只要有函数能够满足把数值压缩到0,1之间就可以&#xff08;因为0到1之间的数值就是概率值&#xff09; 对于分类…