一,什么是coredump
二,coredump文件的存储位置
core文件默认的存储位置与对应的可执行程序在同一目录下,文件名是core,大家可以通过下面的命令看到core文件的存在位置:
cat /proc/sys/kernel/core_pattern
缺省值是core
通过下面的命令可以更改coredump文件的存储位置,若你希望把core文件生成到/data/coredump/core目录下:
echo /data/coredump/core > /proc/sys/kernel/core_pattern
我们通过修改kernel的参数,可以指定内核所生成的coredump文件的文件名。例如,使用下面的命令使kernel生成名字为core.filename.pid格式的core dump文件:
echo /data/coredump/core.%e.%p >/proc/sys/kernel/core_pattern
三,如何判断一个文件是coredump文件?
readelf命令
file命令进行快速判断
四,产生coredum的一些条件总结
1,内存访问越界
a) 由于使用错误的下标,导致数组访问越界。
b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符。
c) 使用strcpy, strcat, sprintf, strcmp,strcasecmp等字符串操作函数,将目标字符串读/写爆。应该使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函数防止读写越界。
2,多线程程序使用了线程不安全的函数。
应该使用下面这些可重入的函数,它们很容易被用错:
asctime_

本文介绍了Linux下的coredump,包括coredump的定义、存储位置的查看与设置,以及如何判断一个文件是否为coredump文件。同时,文章总结了产生coredump的条件,并详细阐述了利用gdb进行coredump分析的三个步骤。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



