c语言调试如何生成core文件,程序崩溃了,但是没有产生core文件,也没有捕获到信号...

这篇博客讨论了一个在Linux 2.6 (SUSE 10,64位)上运行的网络程序,该程序在运行数小时后崩溃,但未生成core文件,也没有捕获到任何信号。尽管在/etc/profile中设置了ulimit以允许生成core文件,并且程序内部实现了信号处理函数来记录和退出,但在实际崩溃时并未触发。问题可能涉及内存管理、信号处理或系统资源限制。
摘要由CSDN通过智能技术生成

操作系统:Linux 2.6(suse 10,64位)

崩溃的程序是一个网络程序,一般运行几个小时后,就会崩溃, 但是没有产生core文件,也没有捕获到信号(没有输出捕获信号的日志)

在/etc/profile 里边设置了ulimit

下面是使用ulimit -a命令的打印的内容:

core file size          (blocks, -c) unlimited

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 28064

max locked memory       (kbytes, -l) 32

max memory size         (kbytes, -m) unlimited

open files                      (-n) 100001

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 28064

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

在程序中模拟一个段错误,在程序的当前目录是会产生core文件的。

在信号捕获方面的代码是这样的:

static void sig_handler(const int sig)

{

log_error("SIGINT handled, core terminated, sig = %d", sig);

exit(0);

return;

}

void set_sig()

{

signal(SIGCHLD, SIG_DFL);

signal(SIGTSTP, SIG_IGN);

signal(SIGTTOU, SIG_IGN);

signal(SIGTTIN, SIG_IGN);

signal(SIGHUP, SIG_IGN);

signal(SIGTERM, SIG_DFL);

signal(SIGPIPE, SIG_IGN);

signal(SIGALRM, sig_handler);

signal(SIGINT, sig_handler);

signal(SIGIO, sig_handler);

signal(SIGPOLL, sig_handler);

signal(SIGPROF, sig_handler);

signal(SIGPWR, sig_handler);

signal(SIGSTKFLT, sig_handler);

signal(SIGUSR1, sig_handler);

signal(SIGUSR2, sig_handler);

signal(SIGVTALRM, sig_handler);

return;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值