linux下coredump学习
参照 https://www.cnblogs.com/alantu2018/p/8468879.html
1、查看linux下coredump是否开启
在linux上coredump默认是关闭的,可以通过ulimit -c查看,如果输出为0,则代表coredump没有开启。
可以使用 ulimit -c unlimited开启,再用ulimit -c查看,结果为unlimited;
但这种操作只能对当前终端有效,想让coredump持久开启,需修改vim /etc/security/limits.conf文件为如下内容
再执行ulimit -c unlimited命令,打开新的终端再执行ulimit -c,结果显示为unlimited。
2、 设置core文件的保存路径和名称:
cd /proc/sys/kernel/
echo "/var/log/core/corefile-%e-%p-%t" > core_pattern (设置文件名称以及路径),/var/log/core文件夹不会自动生成需手动创建且创建时需注意权限。
生成core的文件
3、查看core文件
缺少依赖debuginfo-install和glibc
4、安装debuginfo-install和glibc
查找/etc/yum.repos.d/CentOS-Debuginfo.repo文件,如果找到把文件中的enable=0改成enable=1,如果没有则新建
里面的内容为:
# CentOS-Debug.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# All debug packages from all the various CentOS-7 releases
# are merged into a single repo, split by BaseArch
#
# Note: packages in the debuginfo repo are currently not signed
#
[base-debuginfo]
name=CentOS-7 - Debuginfo
baseurl=http://debuginfo.centos.org/7/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7
enabled=1
在查看/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7下内容(不同centos版本的内容不一样)
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
mQENBFPE+90BCAChR7lmZuMhY3IXdMSwAFXwnJUMWJbwX1p2OR7XV/YLkKEZ+a0T
xnaEKwe9WDb7k0jUaMkeAu9ACtHKmnGrp5eCI7AJv5gF7GT1k615xyvCyGSCFTaw
VidWtXAK3RF1qKalNCj9sz8utjYVe8UXRcvHU20TlK/J1Z64Ths52UUI9kBWJN+i
QuruxEsMCyylmXeodUfQrFG+zifreCyQ0BYZEiH+6EtIzlPeCOjgjz2AWov19q/H
KXyUoiJpy40NWhEV8dazbpxrsiD5Tlc+bLjhpDTa7aPhhhUjJaSIEP3HBE01+0rz
nf00VrwQlsipRUYuv+8T5nlQ16l8IqknNLbDABEBAAG0PkNlbnRPUy03IERlYnVn
IChDZW50T1MtNyBEZWJ1Z2luZm8gUlBNUykgPHNlY3VyaXR5QGNlbnRvcy5vcmc+
iQE+BBMBAgAoBQJTxPvdAhsDBQkcMgSABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIX
gAAKCRDQ8lo8tnksOWRFB/9PzxN2l6KSLWHPJX8OD4B7npVoouM+mscK4oHjXSRI
y2u2O2tT2hmcQzan29dahk1hsnyLdQlNSo642rV4ykbOdW9iszCLrw4ZwuQmpm5c
qeHMUPntwz9MFvn9memh85kZuxdFnAHmaxmqNl+5LEPNmmWyfX7TjGyG1Oi2xd7o
yT7lKnVXyLdY8E62RKTuQ/BNnAFpmUVgLbeKVq6qggZYgPOLt7GpLfpCm63aDZoX
OzJM75RqCtiK0n1BSBdUiVQ8+2XXYqRejFOEZa5LrLNDLFfqYA0YgpN/ournTKWt
QLHycvaoJrXZzF2EQjLiU2hHx8vS3bTR0lZsv8tUBHXG
=2CYo
-----END PGP PUBLIC KEY BLOCK-----
这些都ok了,就可以使用yum install yum-utils命令了。
最后就是用debuginfo-install命令缺啥补啥了。
debuginfo-install glibc-2.17-260.el7.x86_64 libgcc-4.8.5-39.el7.x86_64 libstdc++-4.8.5-39.el7.x86_64
5、安装完成后
在core文件所在的目录执行gdb调试;
注意,可执行文件在编译时要加-g。
测试代码: