linux 打不开core dump,Linux下无法产生core dump的问题与解决

当程序应接收到SIGABRT信号却没有生成core文件时,问题可能出在工作路径改变导致不可写。确保core文件配置无误,如`ulimit -c`、`/proc/sys/kernel/core_pattern`等,并在程序执行前切换回可写路径,可以解决此问题。
摘要由CSDN通过智能技术生成

一、Linux系统产生core文件的必要条件:

Linux下不同信号有各自不同的默认处理:

Signal Value Action Comment

----------------------------------------------------------------------

SIGHUP 1 Term Hangup detected on controlling terminal

or death of controlling process

SIGINT 2 Term Interrupt from keyboard

SIGQUIT 3 Core Quit from keyboard

SIGILL 4 Core Illegal Instruction

SIGABRT 6 Core Abort signal from abort(3)

SIGFPE 8 Core Floating point exception

SIGKILL 9 Term Kill signal

SIGSEGV 11 Core Invalid memory reference

SIGPIPE 13 Term Broken pipe: write to pipe with no

readers

SIGALRM 14 Term Timer signal from alarm(2)

SIGTERM 15 Term Termination signal

SIGUSR1 30,10,16 Term User-defined signal 1

SIGUSR2 31,12,17 Term User-defined signal 2

SIGCHLD 20,17,18 Ign Child stopped or terminated

SIGCONT 19,18,25 Cont Continue if stopped

SIGSTOP 17,19,23 Stop Stop process

SIGTSTP 18,20,24 Stop Stop typed at tty

SIGTTIN 21,21,26 Stop tty input for background process

SIGTTOU 22,22,27 Stop tty output for background process

系统限制:

ulimit -c ulimited

core文件产生的路径和名称配置:

/proc/sys/kernel/core_pattern

/proc/sys/kernel/core_uses_pid

同时注意程序应对产生core的路径应有写权限,且文件系统有足够空间。

路径下不应有被占用的同名文件,或不可写的同名目录。

其他少见情况的限制:

进程拥有者应可读程序文件;

SUID(SGID)后的进程所有者应拥有相应权限。

kernel Oops

oom killer

二、实际遭遇的现象:

日志中记录程序应收到SIGABRT信号退出,但未产生core文件。

表面上未发现限制core文件产生的配置和设置。

三、原因与解决:

最后怀疑程序运行过程中工作路径改变,且该路径不可写,导致core文件无法生成。

在core dump前将工作路径chdir()回正常路径后,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值