linux打印mysql堆栈_第25问:MySQL 崩溃了,打印了一些堆栈信息,怎么读?

82685a68f9e4f0f0eae90d03367f725d.png

问题

在 09 问中,我们开启了 coredump 功能,在 MySQL 崩溃时获得了有用的 coredump 信息。

那如果没开启 coredump,仅有 error log 中的堆栈信息,我们如何分析有效的信息?

实验

我们沿用 09 问中的 MySQL 崩溃的场景,此处忽略复现崩溃的步骤,大家参看 09 问查看 error log:

4b4a38f9220a57b346516f8ea8653c38.png

我们拿到了崩溃位置 0xee36f1,如何找到与之相对的代码位置呢?找台测试机,获取对应版本的安装包:

217e5f4c3a6c6cbfa4786035bb6cc2ac.png

解压:

22239fd3e59baa396f9182f34e81bc01.png

然后用 GDB 打开 mysqld:

ca3a67a88d79ba7d3047bcb126ef4231.png

在 0xee36f1 位置打一个断点:

1cb4de48d112a61656795cada357343c.png

我们可以看到,gdb 将崩溃位置的文件名和行号都打印出来,剩下的事情,就可以交给开发工程师,按照这个崩溃堆栈来进行问题排查。

赠送章节

881e2646043c58a06186d290847e1095.png

红框内的这串信息是什么?我们来解开看一下,这段信息分为两段,"+0x71" 是一个偏移量,前面是一串文字,我们将文字解析出来:

fd9744803ddf6ea9143d53d7bfd3046d.png

可以看到前面这串文字是一个函数签名的编码,用 c++filt 还原编码以后,可以看到完整的函数签名。红框内的这串信息的意思就是崩溃位置是 一个函数起始位置 + 偏移量。我们大概可以猜到,这个 MySQL 的缺陷是在为 binlog 产生新的文件名时发生的。

小贴士:

函数起始位置 + 偏移量 是一种内存位置的表示方法,但该位置不一定是这个函数内的代码。

以本例来说,0xee36f1 这个位置,程序找到了就近的函数 generate_new_name 的起始位置,计算出有 0x71 这么多偏移,就表示成了 generate_new_name+0x71 这种形式。

但 0xee36f1 这个位置的代码,大概率是,但,不一定是 generate_new_name 这个函数内部的一段代码。

关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

2107cff5f930297de97987de8903da4f.png

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

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

相关文章

winform中treeview控件实现部分节点显示checkbox

用过asp.net的应该知道,要在treeview中实现上述功能可以使用ShowCheckBox 属性指定那些节点显示checkbox哪些不显示,可是winform中的treeview只提供一个ShowCheckBoxes 属性,要么全部节点显示checkbox,要不全部不显示,而指定节点没…

[机器学习笔记] Note3--多变量线性回归

继续是机器学习课程的笔记,这节课介绍的是多变量的线性回归。 多变量线性回归 多维特征 上节课介绍的是单变量的线性回归,这节课则是进一步介绍多变量的线性回归方法。 现在假设在房屋问题中增加更多的特征,例如房间数,楼层等…

mysql主键long_MySQL主键设计

[TOC]在项目过程中遇到一个看似极为基础的问题,但是在深入思考后还是引出了不少问题,觉得有必要把这一学习过程进行记录。MySQL主键设计原则MySQL主键应当是对用户没有意义的。MySQL主键应该是单列的,以便提高连接和筛选操作的效率永远也不要…

linux 常用工具

sqlitebrowser sudo apt-get install sqlitebrowser 转载于:https://www.cnblogs.com/xxhong/archive/2013/03/01/2938585.html

[机器学习笔记] Note4--逻辑回归

继续是机器学习课程的笔记,这节课会介绍逻辑回归。 分类问题 这节课会介绍的是分类问题,其结果是离散值。分类问题的例子有判断电子邮件是否是垃圾邮件;判断肿瘤是良性还是恶性;判断一次金融交易是否是欺诈等等。 首先从二元的…

华为日历怎么显示一月_华为手机日历怎么设置

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。设置华为手机日历的方法:1、打开“时钟”,点击右下角的设置;2、点击“日期和时间”;3、关闭“自动确定日期和时间”和“自动确定时区”…

javascript中children和childNodes的区别

javascript中children和childNodes的区别 1、childNodes:它是标准属性,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本节点。 可以通过nodeType来判断是哪种类型的节点,只有当nodeType1时才是元素…

java容器集合类的区别用法_Java容器笔记(二):不同集合实现类的特点与区别...

package java.util包中的Collection相关接口和类如下图:Collection.png仅讨论Java.util包中的常见集合类,不涉及java.util的子包concurrent中的并发集合类。可以这样简单的来对待容器中集合:Collection_common.png1、 List、Set、Queue三个接…

[机器学习笔记]Note5--归一化

继续是机器学习课程的笔记,这节课会介绍归一化的内容。 过拟合问题 这节课会介绍一个在机器学习过程中经常会遇到的问题–过拟合。通常,当我们有非常多的特征,我们可以学习得到的假设可能非常好地适应训练集,即代价函数可能几乎…

学习使用按位取反.

#include <stdio.h>int main(){ /*学习使用按位取反 程序分析&#xff1a;0~1 1~0*/ unsigned int a, b; a3; b~a; printf("\40:the as 1 complement(decimal)is %d\n",b); a~b; printf("\40:the as 1 complement(he…

java 反射 框架_Java 反射,开发框架必备技能

通过反射技术我们将上面的统一资源定位付(URL) 映射到Class 相当于class: newsmethod: listparameter: 2差不多就是下面样子class News{public String list(String catagory_id){......}}我们只需要在框架核心中分析 url 然后调用对应的方法&#xff0c;于此同时将参数传递过去…

combobox的联动练习

老师的项目中&#xff0c;网站右上有四个联动的combobox&#xff0c;今天第一次尝试解决。外观如图&#xff1a; 首先第一次登陆系统时&#xff0c;需要分别载入4个框中的数据。通过easyui-combobox的url 属性请求php返回json数据即可&#xff0c;json中的value是名称&#xff…

[机器学习笔记]Note6--神经网络:表达

继续是机器学习课程的笔记&#xff0c;这节课会介绍神经网络的内容。 非线性假设 在之前的课程中&#xff0c;我们看到使用非线性的多项式能够帮助我们建立更好的分类模型。假设我们有非常多的特征&#xff0c;例如100个变量&#xff0c;我们希望用这100个特征来构建一个非线…

《实用技巧》——让你的网站变成响应式的3个简单步骤

如今&#xff0c;一个网站只在桌面屏幕上好看是远远不够的&#xff0c;同时也要在平板电脑和智能手机中能够良好呈现。响应式的网站是指它能够适应客户端的屏幕尺寸&#xff0c;自动响应客户端尺寸变化。在这篇文章中&#xff0c;我将向您展示如何通过3个简单的步骤轻松地使网站…

hiveserver2 mysql_HiveServer2的配置使用

HiveServer2的配置和使用 hive-site.xml配置 hiveserver2的配置 property name hive.support.concurrency / name description Enable Hives TableLock Manager Service / description value true / value / property property name hive.zookeeper.quorum /HiveServer2的配置和…