如何让MySQL崩溃时生成正确的coredump
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让MySQL崩溃时生成正确的coredump相关的知识,希望对你有一定的参考价值。
参考技术A 为了让mysql崩溃时生成正确的coredump,除了要按前一篇中讲到的那样配置好系统环境,还需要在启动mysqld时指定--core-file参数。这一配置非常重要,若不指定这一参数,则MySQL崩溃时有时能生成coredump,有时不能生成,而且最要命的是生成的coredump内容经常完全不能反映崩溃的原因,具有很强的误导性。一般在Linux系统中都是通过mysqld_safe脚本来启动MySQL(通过/etc/init.d/mysqld start启动时也是调用mysqld_safe),这时指定这一配置最简单的方法是在my.cnf中的[mysqld]节中加入这样一行:
core-file
mysqld_safe会自动将这一参数传递给mysqld。若直接启动mysqld,则在命令行中加上这一参数。
另外core文件的大小限制也可在my.cnf中指定。只要将如下行加入到my.cnf中的[mysqld_safe]节中
core-file-size = unlimited
通过mysqld_safe脚本启动mysqld时就会自动调用"ulimit -c unlimited"。本回答被提问者和网友采纳
linux 程序崩溃 gdb调试coredump文件
linux上程序崩溃起来挺烦人,不过linux 比较好的是有gdb.
1、生成coredump文件
echo "ulimit -c unlimited" >> /etc/profile
然后记得敲入命令
source /etc/profile
然后敲入命令:
ulimit –c
效果如下:
确认能否生成coredump文件,使用如下命令(使用时注意,我在测的时候会直接退出当前用户)
kill -s SIGSEGV $$
然后回到执行上述命令的路径下即可看到coredump文件,我这边生成的文件名为core.3477,依个人会随机生成不同的数字。
也可能文件名为core,
2、调试coredump文件
调试方式为: gdb program coredump文件
例如我的可执行文件为test, 生成的coredump文件为core.3533,则命令如下:
gdb test core.3533
显示如下图所示:
嗯,有的人运气好,直接就显示源代码了,如果你像我一样,接着用下面的命令
backtrace
打印堆栈信息。
我们看到最接近崩溃的地方在第8行
然后调用命令
frame 8
直接找到源代码的位置:
以上是关于如何让MySQL崩溃时生成正确的coredump的主要内容,如果未能解决你的问题,请参考以下文章
崩溃后如何让 XAMPP 中的 MySQL 服务器正常工作?